ASP.NET实现下载功能的中文文件名乱码处理

早几天在系统中添加文件管理的下载功能, 要求在ASPX文件中实现, 以进行权限的控件,

于是添加下列代码:

...
Response.ContentType = mime; //相应的MIME TYPE
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" +fileName + "\"");

Response.BinaryWrite(bytes);
Response.End();
...

当fileName中包含中文时, 文件下载保存时, 文件名变成了乱码, 需要用户修改,这也就违被了我设定预设文件名的初衷.

解决办法1: 对fileName进行URL编码, 把下划线标注的那句改为

Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + Server.UrlEncode(fileName) + "\"");

便可.

虽然中文乱码问题解决了, 但是还有一个问题: 在测试时, 下载保存的文件名有时会变成该页面的名字(.aspx), 虽然可以把内容下载到本地, 但是需要更改文件名及类型, 这样会给用户带来很大的困惑.

还有一个办法, 可以很简单的解决以上的两个问题:

解决办法2: 假设当前的URL为 http://localhost/download.aspx?id=123, fileName为"下载.pdf", 我们只要把下载URL改为 http://localhost/download.aspx/下载.pdf?id=123 可, 上面下划线标注的那句代码则可以注释掉了, 试一下, 结果一定让你非常满意!

时间: 2024-08-22 14:08:43

ASP.NET实现下载功能的中文文件名乱码处理的相关文章

lftp,gFTP和virgoFTP中文文件名乱码解决方案

今天风信网带大家来了解一下linux中FTP服务经常遇到的中文文件名乱码问题,主要针对三种常用的FTP程序来解决,分别是lftp,gFTP和virgoFTP. lftp官方:http://lftp.yar.ru/ 源码包下载地址如下: lftp-4.4.0.tar.gz (2429 kB), lftp-4.4.0.tar.bz2 (1813 kB), lftp-4.4.0.tar.xz (1395 kB) (Yaroslavl, Russia) LFTP是一款非常著名的字符界面的文件传输工具.支

linux中文文件名乱码怎么解决?

  由于安装英文版的系统不支持中文,出现中文文件名乱码. 下面操作时在centos上安装中文支持: 1)先下载并安装两个语言包: fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm   #rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm #rpm -ivh fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm 或者 #y

通过freemarker生成一个word,解决生成的word用wps打开有问题的问题,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件(要注意的是生成xml格式要是2003格式的xml,也就是说拿到的word模板得是2003格式的,否则用wps打开word将会出现问题)   详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(si

php上传中文文件名乱码问题处理方案_php实例

php上传文件是最最基础的一个技术点,但是深入进去也有不少问题需要解决,这不,上传中文文件后,文件名变成了乱码. 下面是问题代码,很简单: 1.问题代码 html部分: 复制代码 代码如下:  <html>  <body>  <form action="upload_file.php" method="post"  enctype="multipart/form-data">  <label for=&q

multipart ile-MultipartFile上传文件时,中文文件名乱码怎么解决?

问题描述 MultipartFile上传文件时,中文文件名乱码怎么解决? package com.upload; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Co

asp.net 实现了一个文件下载的功能 如何解决中文文件名乱码的问题 在线等待高手指教

问题描述 我用asp.net实现了一个文件下载的功能,当被下载文件的文件名为字母时,被下载到本地后文件名正常,但是当被下载文件的文件名是中文名时,下载到本地后,文件名发生了乱码,恳请大侠指教?我的下载实现代码如下:protectedvoidbtnDownLoad_Click(objectsender,EventArgse){try{stringpath="/Files";stringmapPath=Server.MapPath(Request.ApplicationPath+path)

php中强制下载文件的代码(解决了IE下中文文件名乱码问题)_php技巧

中间遇到一个问题是提交的中文文件名直接放到header里在IE下会变成乱码,解决方法是将文件名先urlencode一下再放入header,如下. 复制代码 代码如下: <?php $file_name = urlencode($_REQUEST['filename']); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, po

HTTP协议header中Content-Disposition中文文件名乱码

在做文件下载时当文件名为中文时经常会出现乱码现象.  参考文章 http://blog.robotshell.org/2012/deal-with-http-header-encoding-for-file-download/  本文就详细给出案例来解决这一乱码问题以及还一直未解决的一个疑问欢迎大家一起来探讨.  大体的原因就是header中只支持ASCII所以我们传输的文件名必须是ASCII当文件名为中文时必须要将该中文转换成ASCII.  转换方式有很多  方式一将中文文件名用ISO-885

Java中FTPClient上传中文目录、中文文件名乱码问题解决方法_java

问题描述:   使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录名及文件名中的中文显示为"??". 原因:   FTP协议里面,规定文件名编码为iso-8859-1,所以目录名或文件名需要转码. 解决方案: 1.将中文的目录或文件名转为iso-8859-1编码的字符.参考代码: 复制代码 代码如下:    String name="目录名或文件名";    name=new String(name.ge