码迷,mamicode.com
首页 > Web开发 > 详细

HttpServletResponse文件下载

时间:2020-02-25 14:39:29      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:mic   兼容   服务器   编码方式   ase   出现   image   一个   utf-8   

案例-完成文件下载

先创建一个文件夹叫download

然后在文件里创建几个例子文件

技术图片

 

 

 然后这个文件夹复制到你的Webcontion下去

技术图片

 

 

 然后在Webcontion上创建一个jsp,叫download

技术图片

 

 

 除了能在标签种能设置post请求以外的所有的标签都是get请求,就是不能设置post请求的标签都是get请求

所以a标签就是个get请求

因为是get请求所以这个filename就是所带的参数 让他服务器知道顾客点的是那个 所给出相应的资源

 

技术图片

 

 

 然后在src下创建一个包叫com.oracle.demo01在创建一个Servlet叫DownloadServlet

技术图片

 

 

 然后在jsp写

技术图片

 

 

 重启服务器显示出

a.png

技术图片

 

 

a.txt

技术图片

 

 是乱码

a.wmv和a.rar都是直接下载

技术图片技术图片

 

 游览器能解析的就直接打开 不能解析的就提供下载

 

 

上述代码可以将图片从服务器端传输到浏览器,但浏览器直接解析图片显示在页面上, 而不是提供下载,我们需要设置两个响应头,告知浏览器文件的类型和文件的打开方 式。

1)告知浏览器文件的类型:response.setContentType(文件的MIME类型);

2)告示浏览器文件的打开方式是下载:

response.setHeader("Content-Disposition","attachment;filename=文件名称");

技术图片

 

 写完后重启服务器显示:

技术图片技术图片技术图片技术图片

 

 然后在做一个实例

 右键你的图片改成中文名字

技术图片

 

 然后之前jsp的也改成小狗

技术图片

 

 改完后再重启服务器测试发现

技术图片

 

 这样的话下载是没有问题的,但是因为码表的问题中文乱码所以名字不显示,为了改正这种情况

 

但是,如果下载中文文件,页面在下载时会出现中文乱码或不能显示文件名的情况, 原因是不同的浏览器默认对下载文件的编码方式不同,ie是UTF-8编码方式,而火狐 浏览器是Base64编码方式。所里这里需要解决浏览器兼容性问题,解决浏览器兼容 性问题的首要任务是要辨别访问者是ie还是火狐(其他),通过Http请求体中的一 个属性可以辨别

 技术图片

 

 

解决乱码方法如下(不要记忆--了解):

String filenameEncoder=””;

if (agent.contains("MSIE")) {

// IE浏览器

filenameEncoder= URLEncoder.encode(filename, "utf-8");

filenameEncoder= filenameEncoder.replace("+", " ");

} else if (agent.contains("Firefox")) {

// 火狐浏览器

BASE64Encoder base64Encoder = new BASE64Encoder();

filenameEncoder= "=?utf-8?B?"

+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";

} else {

// 其它浏览器

filenameEncoder= URLEncoder.encode(filename, "utf-8");

}

 

其中agent就是请求头User-Agent的值

代码如下

技术图片

 

 运行结果:

技术图片

 

 一次性验证码

技术图片

 

 解压到

技术图片

 

 把CheckImgServlet复制到src里的demo01下 在把包名改了

技术图片

 

 技术图片

 

 在把new_words复制到WEB-INF下

技术图片

 

 在设置你的web-xml

技术图片

 

 运行出现

技术图片

HttpServletResponse文件下载

标签:mic   兼容   服务器   编码方式   ase   出现   image   一个   utf-8   

原文地址:https://www.cnblogs.com/www1842564021/p/12361479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!