`
hackbomb
  • 浏览: 216592 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

支持中文文件名的jsp下载(已修正BUG版)

    博客分类:
  • Web
阅读更多

down.jsp代码如下:

<%@ page contentType="text/html;charset=gbk"%>
<%@ page language="java" import="java.io.*,java.net.*" pageEncoding="gbk"%>
<html>
<head>
<title>test</title>

</head>
<body>
<%
response.setContentType("text/html");
javax.servlet.ServletOutputStream ou = response.getOutputStream();
String filepath=request.getRealPath("/page")+"/enter/sample/";
String filename=new String(URLDecoder.decode(request.getParameter("filename"),"UTF-8")).toString();
System.out.println("DownloadFile filepath:" + filepath);
System.out.println("DownloadFile filename:" + filename);
java.io.File file = new java.io.File(filepath + filename);
if (!file.exists()) {
System.out.println(file.getAbsolutePath() + " 文件不存在!");
return;
}
// 读取文件流
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
// 下载文件
// 设置响应头和下载保存的文件名
if (filename != null && filename.length() > 0) {
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");
if (fileInputStream != null) {
int filelen = fileInputStream.available();
//文件太大时内存不能一次读出,要循环
byte a[] = new byte[filelen];
fileInputStream.read(a);
ou.write(a);
}
fileInputStream.close();
ou.close();
out.clear();
out = pageContext.pushBody();
}
%>
</body>
</html>

 

test.html

<a href='down.jsp?filename=%E5%8F%97%E7%90%86%E5%91%8A%E7%9F%A5%E5%8D%95.doc'>受理告知单</a>

 

注意:中文文件名需要用urlencode进行转码

分享到:
评论

相关推荐

    jspsmartuploadexample支持中文文件名下载.rar

    jspsmartuploadexample支持中文文件名下载.rarjspsmartuploadexample支持中文文件名下载.rarjspsmartuploadexample支持中文文件名下载.rarjspsmartuploadexample支持中文文件名下载.rar

    jsp实现文件下载与中文文件名乱码问题解决

    本文将深入解析如何在JSP中实现文件下载,并解决中文文件名乱码的问题。 首先,我们需要了解HTTP协议在处理文件下载时的角色。当用户请求下载一个文件时,服务器需要设置响应头来指示浏览器如何处理这个响应。在JSP...

    struts2 中文文件名文件下载

    通过以上步骤,我们可以使Struts2支持中文文件名的下载。然而,这只是基本解决方案,实际应用中可能还需要考虑其他因素,比如跨域资源共享(CORS)策略、安全问题(防止路径遍历攻击)等。在开发过程中,要时刻注意...

    成功解决 Android 下载中文文件名

    Android 中解决中文文件名下载乱码问题 在 Android 应用程序中,下载服务器上的中文文件名文件时,可能会出现乱码问题。本文将介绍如何解决 Android 下载中文文件名问题,确保文件名正确地下载到 Android 设备上。 ...

    ffmpeg.exe在windows修正乱码,命令行支持中文字幕文件名

    "ffmpeg.exe在windows修正乱码,命令行支持中文字幕文件名"这个主题就是专门针对这类问题的解决方案。 首先,我们要理解为什么会出现中文乱码。这通常是因为FFmpeg在处理非ASCII编码的文件名时,没有正确地识别和...

    电子-图片显示fatfs文件系统emwinSD卡支持长文件名支持中文文件名201762.rar

    长文件名和中文文件名的支持是现代文件系统的一个基本需求,它可以提供更直观的文件标识,尤其在处理包含汉字的文件名时,这对于中文环境的应用至关重要。 综上所述,这个项目涵盖了嵌入式系统开发的关键技术,包括...

    不同浏览器上中文文件名的下载乱码问题

    不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式

    可完成中文文件名的上传下载组件jspsmartupload

    可完成中文文件名的上传下载组件jspsmartupload

    Fatfs文件系统支持长文件名

    在FATfs版本0.07e中,已经实现了对长文件名(LFN,Long File Name)的支持,这是相对于传统的8.3格式的短文件名(SFN,Short File Name)的一个重大改进。 在传统的FAT文件系统中,每个文件或目录被表示为一个8个...

    ( response.setHeader()下载中文文件名乱码

    ( response.setHeader()下载中文文件名乱码问题

    fatfs 支持长文件名

    《深入理解FATFS:支持长文件名的机制与实现》 在嵌入式系统开发中,FATFS文件系统因其简单易用、兼容性好等特点,被广泛应用于各种微控制器(MCU)和嵌入式设备。FATFS是由ChaN Soft开发的一种轻量级的文件系统...

    使IIS支持中文文件名

    通过注册表方式修改 使iis支持中文文件名 双击加入注册表即可

    支持中文的jspsmartupload

    SmartUpload 上传组件(中文终极解决版,包括中文文件名上传后乱码,中文参数,下载) 经过呕心沥血的一天一夜,终于搞定SmartUpload组件的所有中文问题,为大家去除有史以来最头痛的中文问题,包括中文参数,中文文件名...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    文件下载response.setHeader()下载中文文件名乱码问题解决办法 本文主要讨论了文件下载时response.setHeader()下载中文文件名乱码问题的解决办法。该问题是由于 HTTP 消息头中的 Content-Disposition 头字段不正确...

    Linux下中文文件名乱码问题的详解 - CSDN博客1

    在Linux系统中,处理中文文件名时可能会遇到乱码的问题,这是因为Linux系统默认采用的字符编码与Windows系统不同。在Windows系统中,GBK是常见的字符编码格式,而在Linux系统中,UTF-8是默认的字符编码。当在Linux...

    jsp页面 链接中文文件名 找不到页面

    总之,中文文件名在JSP链接中无法访问的问题通常是由于服务器不支持UTF-8编码引起的。通过在Tomcat的`server.xml`中配置`URIEncoding`属性为`UTF-8`,可以确保服务器能够正确解析包含中文字符的URL,从而解决这个...

Global site tag (gtag.js) - Google Analytics