您的位置:首页 > 其它

response实现案例之实现文件下载

2016-01-28 22:04 239 查看
实现文件下载(初级的下载)

* 超链接,浏览器可以解析直接打开。

* 弹出下载窗口。

1)前提条件:先准备一个文件。

2)读取文件,读入到输入流中。

3)通过response读出到浏览器端。

4)设置头信息

* Content-Disposition attachment;filename=文件名称

* 以附件的形式打开。

package cn.itcast.response;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 文件下载
* @author Administrator
*
*/
public class DownloadServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String path = getServletContext().getRealPath("/img/girl7.jpg");
System.out.println(path);
//截取文件的名称
// 获取最后一个/
String filename = null;
int index = path.lastIndexOf("\\");
if(index != -1){
filename = path.substring(index+1);
}

// 判断是什么浏览器	Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
// Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0
String agent = request.getHeader("User-Agent");
// System.out.println(agent);
if(agent.contains("MSIE")){
filename = URLEncoder.encode(filename,"UTF-8");
}

if(filename != null){
//设置头信息  Content-Disposition	attachment;filename=文件名称
response.setHeader("Content-Disposition", "attachment;filename=girl7.jpg");
System.out.println(request.getRemoteAddr());

//先获取到文件,读入输入流中
InputStream in = new FileInputStream(path);
//通过response读到客户端
OutputStream os = response.getOutputStream();
//io拷贝
byte [] b = new byte[1024];
int len=0;
while( (len = in.read(b)) != -1 ){
os.write(b, 0, len);
}
in.close();
os.close();
}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: