首先文件名是是以utf-8编码保存在数据库中,文件名暂定为1_中文文件123.txt,然后作如下处理来下载
response.setContentType("application/octet-stream;charset=UTF-8");
fileName=java.net.URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面点击文件下载的时候能够正确显示中文名称1_中文文件123.txt%0A,但是文件名的结尾却出现%0A字符(个人猜测是结束符的utf-8编码);但是此时在firefox下面却显示1_%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6123.txt%0A
然后我又试了另一种方案
response.setContentType("application/octet-stream;charset=UTF-8");
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
此时在ie下面下载的时候弹chu的文件名是乱码;而在firefox下面却正确显示1_中文文件123.txt。
解决方案:
public String getFileName(String filename, HttpServletRequestWrapper reqw){
String agent = reqw.getHeader("USER-AGENT");
if(null != agent && -1 != agent.indexOf("MSIE")){
filename = URLEncoder.encode(filename,"UTF8");
}else if(null != agent && -1 != agent.indexOf("Mozilla")){
filename = MimeUtility.encodeText(filename,"UTF8","B");
}
return filename;
}
分享到:
相关推荐
本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...
### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让...通过以上步骤和注意事项,我们可以有效地实现Java中文件的下载功能,并且解决了中文文件名可能带来的乱码问题,提高了用户体验。
通过上述方法,我们可以有效解决在IE9和Firefox浏览器下使用`AjaxFileUpload.js`上传大文件时出现的问题。这种方法的核心是调整服务器端响应的`Content-Type`,从而使得浏览器能够正确解析响应数据。同时,该方法也...
之前上传了一个通过Flash实现多文件上传,但是在IE正常运行,当有后台过滤和鉴权时,FireFox 不能正常上传。经过反复研究学习,最终实现了IE 和FireFox 兼容问题。之所以在有后台鉴权时firefox和360浏览器无法正常...
总的来说,解决Java下载文件时的文件名乱码问题,需要理解HTTP协议和浏览器对文件名编码的处理差异,以及利用适当的编码转换方法,确保在所有支持的浏览器中都能正确显示和保存文件名。在编写代码时,一定要注意兼容...
其中一种常见问题是,在尝试访问以JSP(JavaServer Pages)或者ASP(Active Server Pages)编写的网页时,Firefox可能会提示用户保存文件而不是直接显示页面内容。这主要是因为这些网页设计时往往针对Internet ...
在这个场景下,"java调用IE自带工具实现文件下载功能"是一个常见但可能有些过时的方法,因为现代浏览器不再依赖于Internet Explorer(IE)进行文件下载。然而,如果我们仍然需要支持IE浏览器或者在某些特定环境下,...
在Web开发过程中,经常遇到的一个问题是当用户尝试下载包含中文字符的文件名时,会出现乱码的情况。这是因为不同的浏览器处理文件名编码的方式有所不同,导致服务器端设置的文件名在客户端显示不正确。本文将详细...
标题 "IE8上传文件时javascript取文件的真实路径的问题(\"C:\\fakepath\\xxxxx )" 描述了一个在使用Internet Explorer 8 (IE8) 浏览器进行文件上传时遇到的技术挑战。在这个问题中,JavaScript无法获取到文件的实际...
- 需要针对不同浏览器进行兼容性处理,例如IE浏览器、Chrome浏览器和Firefox浏览器等。 - 兼容性处理示例: ```java String clientInfo = request.getHeader("User-Agent"); if (clientInfo != null && ...
Java Response 响应体和文件下载实现原理 Java Response 响应体和文件下载实现原理是指通过Servlet响应客户端的请求,并将响应结果返回给客户端的过程。在这个过程中,需要对响应体的编码进行设置,以避免中文乱码...
5. **浏览器兼容**:除了IE之外,还必须确保在其他主流浏览器如Chrome、Firefox、Safari和Edge上也能正常工作。这通常涉及到对各种浏览器API和行为的理解,以及可能需要使用polyfills来填补不同浏览器之间的功能差异...
### Struts2下载文件中文乱码处理 ...通过这些方法的综合运用,可以有效解决在文件下载过程中出现的中文乱码问题,从而提升用户体验。在实际应用中,还需要结合具体的业务场景进行适当的调整和优化。
SWFUpload是一个开源的Flash组件,它允许网页在不依赖浏览器特定控件(如IE的ActiveX或Firefox的NPAPI插件)的情况下实现文件的上传功能。这个技术结合了Flash的广泛兼容性和JavaScript的灵活性,使得文件上传在多种...
然而,非IE浏览器,如Chrome、Firefox等,它们可能不接受这种编码方式,而是更倾向于使用`UTF-8`编码并包含`filename*`字段来处理非ASCII字符的文件名。对于这种情况,你需要使用以下格式: ```http Content-...
Uploadify 支持多种浏览器,包括IE6+、Firefox、Chrome、Safari 和 Opera。 2. **多文件上传** Uploadify 允许用户选择多个文件进行批量上传,这是通过HTML5的`multiple`属性实现的。在HTML中,只需在`...
本示例主要关注如何使用JSP(JavaServer Pages)技术,在IE、火狐、360和搜狗等常见浏览器上播放FLV(Flash Video)格式的视频。FLV是Adobe Flash Player支持的一种流媒体格式,广泛应用于在线视频内容的传输。 ...
4. **友好文件名处理**:为了防止文件名冲突,系统会自动生成UUID作为文件的保存名称,但在显示或下载时仍然保留原始文件名。 #### 技术环境 - **Struts2版本**:struts-2.1.8 - **开发工具**:MyEclipse - **...
对于非IE浏览器(如Chrome、Firefox等),可以使用`FileReader` API,它提供了一个异步的方式来读取文件内容。`FileReader`的`readAsBinaryString`方法用于将文件读取为二进制字符串。需要注意的是,`...
- 兼容多种浏览器,包括IE、Firefox、Chrome等。 - **应用场景**:适用于需要频繁处理文件上传的Web应用程序,例如个人博客系统、企业内部管理系统等。 ##### 使用jspSmartUpload组件实现文件上传的方法 - **案例...