最近遇到个棘手的问题,业务部门在上传中文名称的附件后,要求在前段下载的时候,直接保存为当初上传得时候的中文名称,按照通用的作法就是把数据库中相关的文章链接保存为直接包含文件名称的路径就好,这样也就意味在url中会包含中文,不巧的是我们网站前段加了Apache的负载均衡,而Apache又恰巧不能解析包含中文的url,中文都被解析成乱码了,想了好多办法终于用中间文件和数据流的方式巧妙的绕过了不能解析中文url
的问题。
中间页面的代码如下:
--test.jsp--
<%@page import="java.io.OutputStream"%>
<%@page import="java.io.FileInputStream"%>
<%
String fileName=new String("**风险揭示书.pdf".getBytes("gb2312"),"ISO8859-1");
String filePath=application.getRealPath("/")+“/upload/20120713/**2012071301.pdf”;//application.getRealPath("/")+"相对根目录的路径";
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
FileInputStream in = new FileInputStream(filePath); // 读入文件
OutputStream os = response.getOutputStream();
os.flush();
int aRead = 0;
while ((aRead = in.read()) != -1 & in != null)
{
os.write(aRead);
}
os.flush();
os.close();
in.close();
%>
然后,使用如下html代码
<a href="/**/test.jsp">**风险揭示书.pdf</a>
就可以下到文件名称包含包含中文的文件了。
这个方法真的是很巧妙,使用了服务器流来下载文件,为此,我特意又搜集了些相关资料如附件。
分享到:
相关推荐
在IT行业中,尤其是在Web开发领域,处理中文文件名在浏览器请求响应中出现乱码的问题是一项常见的挑战。这个小工具包的出现,旨在提供一个解决方案,帮助开发者顺利地处理包含中文字符的文件名,确保在传输过程中...
JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。
但是,当服务器上的文件名包含中文字符时,下载过程中可能会出现乱码问题。这种情况下,文件名将无法正确地显示,影响用户体验。 问题分析 乱码问题的根源在于字符编码不一致。 Android 设备使用 UTF-8 编码,而...
2. **中文字符乱码**:非ASCII字符,包括中文字符,在文件名中可能导致客户端下载时出现乱码,显示为不可读的字符。 为了解决这些问题,文章提供了一种使用C#编写的HttpHandler方法。HttpHandler是一种处理特定HTTP...
然而,当涉及到非英文的文件名,特别是中文文件名时,可能会出现编码问题,导致上传或下载过程中出现乱码。这个问题主要源于不同的字符编码格式不兼容,如UTF-8和GBK之间的转换不当。 首先,我们需要理解JavaScript...
设置好后,重启Tomcat服务器,这样服务器就能正确地将URL中的UTF-8编码的中文字符转换为文件系统能识别的格式,从而解决找不到中文文件名的问题。 此外,还要注意JSP页面本身以及后端Servlet的编码设置。确保JSP...
然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的文件名可能出现乱码的情况。本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、...
在处理Web应用中的文件下载功能时,经常遇到的问题之一就是文件名出现乱码,尤其是当文件名包含中文字符时。为了解决这一问题,本文将详细介绍如何通过Java Servlet技术中的response.setHeader()方法来设置正确的...
在IT行业中,文件管理和下载是常见的操作,尤其是在处理包含中文字符的文件时,可能会遇到乱码问题。本文将深入探讨“文件下载”以及如何解决文件名中文乱码问题,这在处理多语言环境下的数据交流时显得尤为重要。 ...
适用于某些特定场景,比如文件名中包含特殊字符或非ASCII字符的情况。 ```csharp string fileName = "报告.xlsx"; // 使用Server.UrlEncode进行编码 Response.AppendHeader("Content-Disposition", "attachment;...
标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...
以上步骤完成后,Struts2应该能正确处理包含中文文件名的上传和下载操作,避免乱码问题。不过,需要注意的是,不同的服务器环境、浏览器版本或客户端设置可能会影响到文件名编码的处理,因此在实际应用中可能还需要...
在谷歌的算法中,URL包含关键字是会给页面赋予一定权重的,英文是,中文也是,朽木猜测百度之前没有给予中文URL权重,可能是因为识别的问题。 经过一些简单的测试,朽木发现中文URL中包含关键字,对百度SEO有很积极...
在FCKeditor_2.6.3版本中,开发人员面临了一系列关键任务,包括上传大小控制、处理中文文件名问题以及格式控制。本文将详细介绍这些功能的实现。 **上传大小控制:** FCKeditor允许用户上传文件,如图片、文档等。...
"批量文件名编码转换.7z" 提供了一种解决方案,帮助用户将那些使用不同编码格式的文件名,尤其是包含中文汉字的文件名进行批量转换。这个压缩包中的主要工具是 "批量URL转码文件命名.exe",它专门针对URL编码问题,...
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
标题“servlet url传递中文参数”涉及到的知识点包括: 1. **URL编码**:URL中的非ASCII字符必须进行编码,以确保它们能在网络上正确传输。在Java中,可以使用`URLEncoder.encode()`方法对参数值进行编码,例如: ...
6. **文件名编码**:如果URL中包含文件名,如下载链接,文件名的编码也需要考虑。可以使用`java.nio.file.Files`类的`Paths.get(URI)`方法,它会处理文件名的编码问题。 7. **异常处理**:在编码和解码过程中,务必...