在一个链接中如果链接的是中文名字的链接,一般会报404错误,可以使用流的方式下载,即可以解决。
这是一个简单的页面,下载的文件包含中文名:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>下载测试</title>
</head>
<body>
<a href="loadFile?filename=迷失lost迷失2.doc">下载迷失文档</a>
</body>
</html>
通过web.xml配置文件可以找到处理类:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>LoadFileServlet</servlet-name>
<servlet-class>july.DownLoadFile</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoadFileServlet</servlet-name>
<url-pattern>/loadFile</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
处理类,把文件以流的方式送往客户端:
package july;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownLoadFile extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
OutputStream out = response.getOutputStream();
byte b[] = new byte[1024];
String filename = request.getParameter("filename");
filename = new String(filename.getBytes("ISO8859_1"),"utf-8");
System.out.println("filename"+filename);
File fileLoad = new File("F:/LostMusics/Season5", "迷失lost.doc");
response.setHeader("Content-disposition", "attachment;filename="
+ new String(filename.getBytes("GBK"),"ISO8859_1"));
response.setContentType("application/x-tar");
long fileLength = fileLoad.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_Length", length);
FileInputStream in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
out.write(b, 0, n);
}
}
}
这样下来,就可以下载有中文标题的链接了。
这里只是一个简单的例子,在实际中,取文件的方式和处理过程都不是这样。
新增方法:
导入包:JspSmartUpload.jar
建立一个jsp或者servlet作为下载通用页面,为简单其间,直接写在jsp页面中,如:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="com.jspsmart.upload.*" %>
<%
String fileName =request.getParameter("fileName");//从连接中传过来
String fullfile = "files/"+fileName; //得到文件全路径
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,保证点击链接后是下载文件。
// 若不设定,则下载的文件扩展名为doc时,浏览器将自动用word打开它。
su.setContentDisposition(null);
// 下载文件
su.downloadFile(fullfile, null, new String(fileName.getBytes("gb2312"), "ISO8859-1"));
out.clear();
%>
在另一个页面中调用下载页面,如:
<input type="button" onclick="javascript:document.location = 'download.jsp?fileName='wwwbepatientcom.jsp''" value="download"/>
分享到:
相关推荐
综上所述,解决JDBC连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...
本文将详细介绍如何在C#环境中连接Sybase数据库并解决查询结果中的中文乱码问题。 ### 一、背景介绍 在使用C#进行数据库操作时,可能会遇到中文乱码的情况。这主要是因为不同系统或数据库之间编码不一致导致的。...
在IT行业中,遇到数据库连接时中文显示乱码的问题是较为常见的。这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时...
1. 下载并解压JDK 11中文帮助文档压缩包。 2. 找到并双击`JDK 11 API中文帮助文档.CHM`或`JDK 11 API中文帮助文档.chw`文件。 3. 如果系统提示安全警告,选择信任并允许打开。 4. 使用内置的搜索功能,输入关键词...
这个"MQTT协议中文文档和JS连接DEMO.zip"文件包含了对MQTT协议的详细解释以及JavaScript实现MQTT连接的示例,对于理解和应用MQTT协议非常有帮助。 首先,MQTT协议的核心概念是发布/订阅模型。在该模型中,消息发布...
这个“MSDN帮助文档中文.zip”压缩包文件显然是一个中文版本的MSDN离线文档集合,适合那些在无网络环境或需要快速查阅技术资料的开发者使用,特别是对计算机知识不太熟悉的初学者。 该压缩包可能包含了一系列的HTML...
当用户需要获取服务器上的资源,如文档、图片或者视频等,通常会通过点击下载链接触发服务器进行文件传输。本项目针对的一个重要问题就是如何在使用IE11浏览器时避免出现文件名乱码的情况。 首先,我们要理解这个...
在提供的压缩包文件"Adb"中,很可能包含了经过修改的adb.exe程序,用户只需替换原有的adb.exe,即可解决中文乱码问题,无需进行复杂的源码编译。这是一个方便快捷的解决方案,对于那些频繁处理中文文件的开发者来说...
在本文中,我们将深入探讨如何使用Struts2框架实现文件下载功能,尤其是处理包含中文名字的附件。Struts2是一个流行的Java Web开发框架,它提供了丰富的功能,包括处理HTTP请求、表单提交以及数据绑定等。对于文件...
### Flask-SQLAlchemy 连接 DB2 插入中文乱码问题分析与解决方案 #### 一、问题背景 在使用Python进行Web应用开发时,Flask框架因其轻量级、易扩展等特点受到开发者青睐。Flask-SQLAlchemy作为Flask框架下的ORM...
jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。
本文将详细探讨如何使用Java中的`FTPClient`库来下载包含中文的文件,并解决使用`window.open`方法打开包含中文的FTP地址无法下载文件的问题。 #### 问题背景 通常情况下,开发者会尝试通过浏览器提供的`window....
以下是一些解决Linux环境中中文乱码问题的方法和详细步骤: 1. **设置locale** Linux系统中的locale设置对字符编码有很大影响。你可以通过`locale`命令查看当前系统的locale设置。如果系统不支持中文,你需要创建...
5. **lvhowto.chm**:这部分是实用教程集合,包含了大量“如何做”的示例,覆盖了从基本操作到高级应用的各种问题,帮助用户解决实际编程中遇到的问题。 6. **lvprop.chm**:这个文件详细介绍了LabVIEW对象的属性和...
通过上述方法,可以在Express应用中有效解决中文乱码问题。需要注意的是,编码问题往往涉及到多个环节,因此在实际开发过程中需要综合考虑各个环节的设置,确保一致性。 - **前端**:确保HTML页面声明了正确的字符...
如果已经存在的 JSP 文件中出现了中文显示问号问题,可以通过修改 JSP 文件的编码方式来解决问题。具体步骤如下: 1. 打开 JSP 文件,添加以下代码:; charset=GB18030" pageEncoding="GB18030"%> 2. 将各种编码...
在Oracle数据库环境中,PL/SQL是...文档《Oracle客户端中文乱码解决.docx》应该包含了详细的操作指南和案例分析,建议参考文档内容进行具体操作。在解决乱码问题时,保持耐心,仔细排查,通常能够找到合适的解决办法。
4. **常见问题解答**:收集了开发过程中可能遇到的问题和解决办法。 5. **高级特性**:介绍如何利用端点、连接类型、布局等高级功能进行复杂图表的构建。 **Demo应用** 提供的JSPlumb demo包含各种预设的示例,...
"SecureCRT中文乱码解决方法" SecureCRT 是一款功能...SecureCRT 中文乱码的问题可以通过简单的设置和修改 Linux 服务器的配置文件来解决。这两步操作可以确保 SecureCRT 正常地显示中文字符,提高工作效率和体验。