`

下载文件中中文链接的解决

阅读更多

在一个链接中如果链接的是中文名字的链接,一般会报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连接Oracle远程数据库时的中文乱码问题,需要从多个层面进行检查和配置,包括应用程序的配置文件、JDBC连接参数、数据库服务器设置以及开发环境等。通过细心排查和合理配置,可以有效地避免这类...

    C#连接sybase解决中文乱码办法

    本文将详细介绍如何在C#环境中连接Sybase数据库并解决查询结果中的中文乱码问题。 ### 一、背景介绍 在使用C#进行数据库操作时,可能会遇到中文乱码的情况。这主要是因为不同系统或数据库之间编码不一致导致的。...

    解决连接mysql中文显示乱码

    在IT行业中,遇到数据库连接时中文显示乱码的问题是较为常见的。这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时...

    Jdk11中文帮助文档

    1. 下载并解压JDK 11中文帮助文档压缩包。 2. 找到并双击`JDK 11 API中文帮助文档.CHM`或`JDK 11 API中文帮助文档.chw`文件。 3. 如果系统提示安全警告,选择信任并允许打开。 4. 使用内置的搜索功能,输入关键词...

    MQTT协议中文文档和JS连接DEMO.zip

    这个"MQTT协议中文文档和JS连接DEMO.zip"文件包含了对MQTT协议的详细解释以及JavaScript实现MQTT连接的示例,对于理解和应用MQTT协议非常有帮助。 首先,MQTT协议的核心概念是发布/订阅模型。在该模型中,消息发布...

    Java Web文件下载,解决了使用IE11下载文件时所出现的乱码问题

    当用户需要获取服务器上的资源,如文档、图片或者视频等,通常会通过点击下载链接触发服务器进行文件传输。本项目针对的一个重要问题就是如何在使用IE11浏览器时避免出现文件名乱码的情况。 首先,我们要理解这个...

    MSDN帮助文档中文.zip

    这个“MSDN帮助文档中文.zip”压缩包文件显然是一个中文版本的MSDN离线文档集合,适合那些在无网络环境或需要快速查阅技术资料的开发者使用,特别是对计算机知识不太熟悉的初学者。 该压缩包可能包含了一系列的HTML...

    解决adb传输中文出现乱码的最新版adb.exe文件

    在提供的压缩包文件"Adb"中,很可能包含了经过修改的adb.exe程序,用户只需替换原有的adb.exe,即可解决中文乱码问题,无需进行复杂的源码编译。这是一个方便快捷的解决方案,对于那些频繁处理中文文件的开发者来说...

    struts2实现文件下载及中文名字转换解决方案

    在本文中,我们将深入探讨如何使用Struts2框架实现文件下载功能,尤其是处理包含中文名字的附件。Struts2是一个流行的Java Web开发框架,它提供了丰富的功能,包括处理HTTP请求、表单提交以及数据绑定等。对于文件...

    flask_sqlachemy连接db2,插入中文乱码,问题解决

    ### Flask-SQLAlchemy 连接 DB2 插入中文乱码问题分析与解决方案 #### 一、问题背景 在使用Python进行Web应用开发时,Flask框架因其轻量级、易扩展等特点受到开发者青睐。Flask-SQLAlchemy作为Flask框架下的ORM...

    jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法

    jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。

    linux解决中文乱码问题

    以下是一些解决Linux环境中中文乱码问题的方法和详细步骤: 1. **设置locale** Linux系统中的locale设置对字符编码有很大影响。你可以通过`locale`命令查看当前系统的locale设置。如果系统不支持中文,你需要创建...

    LabVIEW中文帮助文档(需放入labview相关文件内使用)

    5. **lvhowto.chm**:这部分是实用教程集合,包含了大量“如何做”的示例,覆盖了从基本操作到高级应用的各种问题,帮助用户解决实际编程中遇到的问题。 6. **lvprop.chm**:这个文件详细介绍了LabVIEW对象的属性和...

    jsplumb中文说明文档+demo

    4. **常见问题解答**:收集了开发过程中可能遇到的问题和解决办法。 5. **高级特性**:介绍如何利用端点、连接类型、布局等高级功能进行复杂图表的构建。 **Demo应用** 提供的JSPlumb demo包含各种预设的示例,...

    jsp中文显示问号问题解决方法.docx

    如果已经存在的 JSP 文件中出现了中文显示问号问题,可以通过修改 JSP 文件的编码方式来解决问题。具体步骤如下: 1. 打开 JSP 文件,添加以下代码:; charset=GB18030" pageEncoding="GB18030"%&gt; 2. 将各种编码...

    Oracle客户端PL/SQL 中文乱码解决

    在Oracle数据库环境中,PL/SQL是...文档《Oracle客户端中文乱码解决.docx》应该包含了详细的操作指南和案例分析,建议参考文档内容进行具体操作。在解决乱码问题时,保持耐心,仔细排查,通常能够找到合适的解决办法。

    SecureCRT中文乱码解决方法

    "SecureCRT中文乱码解决方法" SecureCRT 是一款功能...SecureCRT 中文乱码的问题可以通过简单的设置和修改 Linux 服务器的配置文件来解决。这两步操作可以确保 SecureCRT 正常地显示中文字符,提高工作效率和体验。

    QT中文帮助文档完整版,实在好用,推荐给大家

    QT中文帮助文档是针对Qt开发框架的一份详尽参考资料,对于使用Qt进行软件开发的程序员来说,它具有极高的实用价值。Qt是一个跨平台的应用程序开发框架,支持Windows、Linux、Mac OS X以及多种嵌入式操作系统。它采用...

    Eclipse和MyEclipse中properties文件支持中文的解决办法

    ### Eclipse和MyEclipse中properties文件支持中文的解决办法 #### 概述 在使用Eclipse或MyEclipse开发环境中,经常会遇到properties文件中的中文字符显示异常的问题。这主要是因为properties文件默认采用ASCII编码...

Global site tag (gtag.js) - Google Analytics