java文件下载设置中文名称(response.addHeader)

 1 protected void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3          String browser = "";
 4          String fileName = "测试.txt";
 6             try {
 7                 browser = request.getHeader("User-Agent");
 8                 if (-1 < browser.indexOf("MSIE 6.0") || -1 < browser.indexOf("MSIE 7.0")) {
 9                     // IE6, IE7 浏览器
10                     response.addHeader("content-disposition", "attachment;filename="
11                             + new String(fileName.getBytes(), "ISO8859-1"));
12                 } else if (-1 < browser.indexOf("MSIE 8.0")) {
13                     // IE8
14                     response.addHeader("content-disposition", "attachment;filename="
15                             + URLEncoder.encode(fileName, "UTF-8"));
16                 } else if (-1 < browser.indexOf("MSIE 9.0")) {
17                     // IE9
18                     response.addHeader("content-disposition", "attachment;filename="
19                             + URLEncoder.encode(fileName, "UTF-8"));
20                 } else if (-1 < browser.indexOf("Chrome")) {
21                     // 谷歌
22                     response.addHeader("content-disposition",
23                             "attachment;filename*=UTF-8‘‘" + URLEncoder.encode(fileName, "UTF-8"));
24                 } else if (-1 < browser.indexOf("Safari")) {
25                     // 苹果
26                     response.addHeader("content-disposition", "attachment;filename="
27                             + new String(fileName.getBytes(), "ISO8859-1"));
28                 } else {
29                     // 火狐或者其他的浏览器
30                     response.addHeader("content-disposition",
31                             "attachment;filename*=UTF-8‘‘" + URLEncoder.encode(fileName, "UTF-8"));
32                 }
33             } catch (Exception e) {
34                 e.printStackTrace();
35             }
36             InputStream in = new FileInputStream("D:\\test.txt");//获取文件输入流
37              int len = 0;
38              byte[] buffer = new byte[1024];
39              OutputStream out = response.getOutputStream();
40              while ((len = in.read(buffer)) > 0) {
41                  out.write(buffer,0,len);//将缓冲区的数据输出到客户端浏览器
42              }
43              in.close();
44              out.flush();
45              out.close();
46     }

判断各个浏览器,然后进行解码和加码

时间: 2024-08-05 11:19:23

java文件下载设置中文名称(response.addHeader)的相关文章

asp.net 文件下载显示中文名称

protected void Page_Load(object sender, EventArgs e)    {        string guid = Request.QueryString["GUID"];        string sql = "select XSMC,FJMC,LJ from T_AQGL_FJ where GUID='" + guid + "'";        CX.DBGetResult dbgr = new

java文件下载中中文为空格的解决

在文件下载中设置的addheader中将filename设置为 filename=\""+ URLEncoder.encode(downloadFile.getName(), "UTF-8")+"\" 最后的形式为 response.addHeader("Content-Disposition", "attachment; filename=\""+ URLEncoder.encode(downl

兼容各浏览器的文件下载时中文名称乱码的解决方案

public class DownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // codes.. String name = "中文名 带空格 的测试文件.txt"; String userAgent = request.get

设置程序logo和中文名称

程序logo的设置方法: 如下图所示,把合适的图标添加到工程即可 程序名称的设置方法: 设置程序logo和中文名称,布布扣,bubuko.com

类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,

编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount().定义Fish类,是Animal类的子类,统计鱼的数量 count,获得鱼数量的方法 getCount().定义Tiger类,是Animal类的子类,统计老虎的

java 文件下载

文件下载 设置一个超链接,不就可以下载可以了吗?确实如此,但是通过超链接下载文件,暴露了下载文件的真实地址,不利于对资源进行安全保护:而且,利用超链接下载文件,服务端的文件只能存放在Web应用程序所在的目录下. 利用程序编码实现下载,可以增加安全访问控制,对经过授权认证的用户提供下载:还可以从任意位置提供下载的数据,我们可以放到Web应用程序以外的目录中,也可以将文件保存到数据库中. 利用程序实现下载也非常简单,只需要按照如下的方式设置三个报头域就可以了: Content-Type:applic

Java Servlet API中文说明文档

Java Servlet API中文说明文档译者前言:       近来在整理有关Servlet资料时发现,在网上竟然找不到一份中文的Java Servlet API的说明文档,而在有一本有关JSP的书后面附的Java Servlet API说明竟然不全,而这份文档的2.1a版在1998年的11月份就已定稿.所以我决定翻译一份中文的文档(其中一些与技术关系不大的部分已被略去),有兴趣的读者可以从http: //java.sun.com/products/servlet/2.1/servletsp

Java实战之04JavaWeb-02Request和Response

一.Response和Request的生态环境 二.HttpServletResponse---代表响应对象 1.设置状态码 void setStatus(int sc) 状态码: 200:一切正常 正常返回数据 302:重定向 304:拿缓存 404:找不到资源 500:服务器端报错(一般情况,代码有异常) 2.设置响应头 (1)设置响应头的API (2)案例-重定向 重定向: 实现重定向:302+Location servlet1: response.setStatus(302); resp

Java文件下载的几种方式

   本文主要是讲述Java文件下载的几种方式,更多Java技术知识,请登陆疯狂软件教育官网. publicHttpServletResponsedownload(Stringpath,HttpServletResponseresponse){ try{ //path是指欲下载的文件的路径. Filefile=newFile(path); //取得文件名. Stringfilename=file.getName(); //取得文件的后缀名. Stringext=filename.substrin