Web 文件(图片)下载
2016-07-21 00:31
246 查看
对Servlet的响应,以告知浏览器下载文件:
需要对http响应协议设置:
1:设置响应头--内容接收程序--浏览器看到这个响应头,就会把它认为的下载程序打开
(如果识别迅雷那么就会自动打开迅雷,如果没有其它的则打开一个“文件另存为”的对话框
response.setContentType("application/force-download");
2:设置响应头--告诉浏览器:文件名+文件类型
String fileName = "欢迎文件名.jpg";
response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");//注意,“attachment;” 不能少,否则浏览器会直接在新窗口中打开
3:上面的fileName会乱码,在setheader前解决中文文件名乱码问题
适用于ie/360等浏览器。
fileName = URLEncoder.encode(fileName,"utf-8");
火狐设置:
fileName=new String(fileName.getBytes("utf-8"), "ISO8859-1");
4:向浏览器发送要下载的文件数据
String realPath = getServletContext().getRealPath("/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);
}完整的程序(实现多浏览器支持):
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/force-download");
response.setCharacterEncoding("utf-8");
String fileName="图片下载.gif";
if(request.getHeader("user-agent").contains("Firefox"))//判断是否为火狐
fileName=new String(fileName.getBytes("utf-8"), "ISO8859-1");
else
fileName=URLEncoder.encode(fileName, "utf-8");
response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");
String filePath=getServletContext().getRealPath("/images/no laugh.gif");
OutputStream out=response.getOutputStream();
byte[] buf=new byte[1024];
FileInputStream fin=new FileInputStream(new File(filePath));
int len=0;
while((len=fin.read(buf))!=-1){
out.write(buf, 0, len);
}
fin.close();out.flush();out.close();
}
需要对http响应协议设置:
1:设置响应头--内容接收程序--浏览器看到这个响应头,就会把它认为的下载程序打开
(如果识别迅雷那么就会自动打开迅雷,如果没有其它的则打开一个“文件另存为”的对话框
response.setContentType("application/force-download");
2:设置响应头--告诉浏览器:文件名+文件类型
String fileName = "欢迎文件名.jpg";
response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");//注意,“attachment;” 不能少,否则浏览器会直接在新窗口中打开
3:上面的fileName会乱码,在setheader前解决中文文件名乱码问题
适用于ie/360等浏览器。
fileName = URLEncoder.encode(fileName,"utf-8");
火狐设置:
fileName=new String(fileName.getBytes("utf-8"), "ISO8859-1");
4:向浏览器发送要下载的文件数据
String realPath = getServletContext().getRealPath("/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);
}完整的程序(实现多浏览器支持):
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/force-download");
response.setCharacterEncoding("utf-8");
String fileName="图片下载.gif";
if(request.getHeader("user-agent").contains("Firefox"))//判断是否为火狐
fileName=new String(fileName.getBytes("utf-8"), "ISO8859-1");
else
fileName=URLEncoder.encode(fileName, "utf-8");
response.setHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");
String filePath=getServletContext().getRealPath("/images/no laugh.gif");
OutputStream out=response.getOutputStream();
byte[] buf=new byte[1024];
FileInputStream fin=new FileInputStream(new File(filePath));
int len=0;
while((len=fin.read(buf))!=-1){
out.write(buf, 0, len);
}
fin.close();out.flush();out.close();
}
相关文章推荐
- wma tag 批量修改[原代码-从wmfsdk中修改]
- 网站被黑后的处理方法及批量删除恶意代码
- 再谈反向链接,又学了东西
- 大家要经常更新内容啊-针对百度的原创收录速度测试
- jsp 定制标签(Custom Tag)
- DEDECMS TAG伪静态 IIS_rewrite配置方法附rewrite下载
- 个人经验总结:网站被百度“拔毛”如何恢复?
- JSP自定义分页标签TAG全过程
- 网站优化细节之服务器的选择真没见过
- jQuery实现tag便签去重效果的方法
- 3种高效的Tags标签系统数据库设计方案分享
- Javascript让DEDECMS告别手写Tag
- Tag技术的实现思路
- The Introduction Of Input Tag
- 很难找齐的常识
- 喜讯:富士康宣布员工整体薪资水平提升30%以上
- 交换机端口处理过程
- title
- title
- git tag 记忆条