您的位置:首页 > 其它

web文件下载、真实路径问题

2016-07-20 15:32 239 查看
public class DownServlet extends HttpServlet {

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

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置响应头--内容接收程序--浏览器看到这个响应头,就会把它认为的下载程序打开(如果识别迅雷那么就会自动打开迅雷,如果没有其它的则打开一个“文件另存为”的对话框
response.setContentType("application/force-download");

//设置响应头--告诉浏览器:文件名+文件类型
String fileName = "湖南欢迎s文件a名.jpg";
//解决中文文件名乱码问题(只要用下面一句对文件名进行编码就行了)
fileName = URLEncoder.encode(fileName,"utf-8");

response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");//注意,“attachment;” 不能少,否则浏览器会直接在新窗口中打开

//向浏览器发送要下载的文件数据
String realPath = getServletContext().getRealPath("/imgs/1.jpg");//真正下载的文件数据在这里,这句话设涉及到真是路径问题,这句话的作用是获得带盘符的tomcat\webapps\项目根目录(即项目名)\imgs\1.jpg的真实路径
InputStream in = new FileInputStream(realPath);
OutputStream out = response.getOutputStream();
byte buf[] = new byte[1024];
int len=0;
while( (len=in.read(buf))!=-1){
out.write(buf, 0, len);
}
out.close();
in.close();

}

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