sevlet 给客户端下载一个文件

来源:互联网 发布:coc 女王升级数据 编辑:程序博客网 时间:2024/05/18 03:18
package com.itheima.servlet;import java.io.FileInputStream;import java.io.IOException;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo3 extends HttpServlet {/*给客户端下载一个文件的思路* * 1.得到文件的路径* 2.创建一个输出流 把文件放进去* 3.根据路径得到文件的名字* 4.用URLEncoder.encode给文件编码* 5.用setHeader告诉客户端要下载什么文件* 6.用字节流输出文件* * */public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//通过路径得到一个输入流String path = this.getServletContext().getRealPath("/WEB-INF/classes/美女.jpg");FileInputStream fis = new FileInputStream(path);//创建字节输出流ServletOutputStream sos = response.getOutputStream();//得到要下载的文件名String filename = path.substring(path.lastIndexOf("\\")+1);//设置文件名的编码filename = URLEncoder.encode(filename, "UTF-8");//将不安全的文件名改为UTF-8格式//告知客户端要下载文件response.setHeader("content-disposition", "attachment;filename="+filename);response.setHeader("content-type", "image/jpeg");//执行输出操作int len = 1;byte[] b = new byte[1024];while((len=fis.read(b))!=-1){sos.write(b,0,len);}sos.close();fis.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}


原创粉丝点击