关于使用servlet下载中文名称的文件

在jsp页面用servlet使用js调用:

var win=window.open("DownloadYhscServlet",‘用户手册下载‘, ‘height=‘+iHeight+‘, width=‘+iWidth+‘,top=‘+iTop+‘,left=‘+iLeft+‘,status=no,scrollbars=no, resizable=no‘);

在servlet中实现下载的方法:

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
}
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
  {
   String downFilename="用户手册.doc";
   //获取项目当前路径
   String filepath=this.getServletConfig().getServletContext().getRealPath("/");
   response.setContentType("text/plain");
   response.setContentType("application/vnd.ms-excel;charset=UTF-8");
   response.setHeader("Location",downFilename);
   //处理中文
   downFilename = URLEncoder.encode(downFilename, "UTF-8");
   response.setHeader("Content-Disposition", "attachment; filename=" + downFilename);
   OutputStream outputStream = response.getOutputStream();
   InputStream inputStream = new FileInputStream(filepath+"/upload/用户手册.doc");
   byte[] buffer = new byte[1024];
   int i = -1;
   while ((i = inputStream.read(buffer)) != -1) {
      outputStream.write(buffer, 0, i);
      }
   outputStream.flush();
   outputStream.close();
  }catch(FileNotFoundException e1)
  {
   System.out.println("没有找到您要的文件");
  }
  catch(Exception e)
  {
   System.out.println("系统错误,请及时与管理员联系");
  }
}

开始的时候用过jspsmartupload组件进行下载,但是发现这个jar虽然好用,但是对中文名称处理不好,会产生乱码,所以,只能使用文件流来进行文件的下载,在文件流下载中,也要使用

downFilename = URLEncoder.encode(downFilename, "UTF-8");

来进行中文的处理,可以实现中文名称文件的下载。

时间: 2024-10-31 11:56:35

关于使用servlet下载中文名称的文件的相关文章

python字符集分析,解决windows下FTPClient下载中文名称文件乱码

python中的中文编码一直以来都是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢?在python中提到unicode,一般指的是unicode对象,例如'哈哈'的unicode对象为u'\u54c8\u54c8',而str,是一个字节数组,这个字节数组表示的是对unicode对象编码(可以是utf-8.gbk.cp936.GB2312)后的存储的格式.这里它仅仅是一个字节流,没有其它的含义,如果你想使这个字节流显示的内容有意义,就必须用正

Servlet下载服务器上的文件Demo

下载文件 1.直接使用a标签来去下载 有些内容会浏览器自动解析 浏览器不能解析的文件才会被下载 2.通过发送Servlet请求来去下载 通过发送一个Servlet请求,把文件名发送给服务器 发送给服务器后,接收到文件名参数,获取文件的绝对地址 通过流的形式来去写到浏览器 还得要告诉文件是什么类型 浏览器是以MIME的类型来识别类型 this.getServletContext().getMimeType(“文件名称”) 设置响应的类型 res.setContentType("MIME类型&quo

文件上传下载过程中中文名称问题

//上传-- // 1 保存数据到excel,对应的sheet头header,body数据类型list //2 上传文件到服务器中 //下载-- // 1 获取文件路径 //2 导出数据到保持的路径(或者是浏览器路径) /** * 保存数据到excel * @param listBody * @param sheetName */ public void saveExcelData(List<DocLibBrowseOrgVo> listBody, String sheetName) { XS

servlet下载文件(五)

1.servlet下载文件 servlet下载文件就是将服务器端的文件传输到客户端. 2案例 下载文件servlet类 package com.learn; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import java

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

servlet 通过 FileItem 实现多文件上传

[本文简介] 一个servlet 多文件上传的简单例子. [依赖包] commons-fileupload-1.3.1.jar commons-io-2.2.jar [依赖包下载] commons-fileupload-1.3.1.jar:http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi commons-io-2.2.jar:http://commons.apache.org/proper/co

[bug]使用SharpZipLib遇到中文名称乱码问题

写在前面 业务逻辑是这样的,需要导出一个app的话题,并需要把该话题下帖子的附件导出,然后需求想修改成人员的名称.jpg的格式.所以就出现了中文乱码的问题.在本地没问题,但发布到服务器上面就出问题,每次打包下载下面的只有英文名称的文件,没有中文的. 工具类 public class ZipHelper { public static void ZipFile(string strFile, string strZip) { if (strFile[strFile.Length - 1] != P

关于SSH中tomcat下中文名称图片不显示的问题

最近做一个SSH框架的项目,用tomcat发布,需要上传图片到指定路径,然后再将图片显示在页面上.有一个问题:如果是英文名称的图片,就正常显示,可如果是中文的,它就是显示不出来,于是乎,在网上各种百度,各种尝试,查出有两种解决方法: 方法一: 在tomcat下的server.xml文件中,添加编码格式如图: 但是这种方法是治标不治本,如果换一种服务器发布,照样会出现乱码问题,这时就需要采用第二种方法. 方法二: 定义一个中文过滤器,步骤如下: 第一步:创建过滤器 ? 1 2 3 4 5 6 7

Python 2.7_Second_try_爬取阳光电影网_获取电影下载地址并写入文件 20161207

1.昨天文章http://www.cnblogs.com/Mr-Cxy/p/6139705.html 是获取电影网站主菜单 然后获取每个菜单下的电影url  2.今天是对电影url 进行再次解析获取下载地址 并写入文件  调用函数和类多线程还没实现 一步步来吧 3.问题:我想实现的是先对菜单进行创建文件目录 然后每个目录下以获取的电影名称.txt 作为文件 文件内是下载连接,但是创建一级菜单文件夹没问题 用OS模块就可以创建 在写入电影名称.txt时候出问题 报错 我以为是编码问题 f.open