asp.net 文件下载时,出现非法路径解决方案

原创 2012年03月30日 13:55:22

问题原因:asp.net 页面之间传递中文时,编码转换出错,所以会出现该情况。

 

思路:可以用Server.EncodeURl ,Server.DecodeURl的属性编码和解码

 

关键代码

 

在下载连接上将url进行编码:

 

public string EncodeURL(string s)
    {
        string path = Server.UrlEncode(s);
        return string.Format("Download.aspx?path={0}", path);

    }


 

在处理下载的页面,对url进行解码:

  Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); //解决中文乱码
                string filePath = Request.QueryString["path"].ToString();
                filePath = Server.UrlDecode(filePath);
                FileInfo file = new FileInfo(filePath);
                if (file.Exists)
                {


                    Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); //解决中文文件名乱码   
                    Response.AddHeader("Content-length", file.Length.ToString());
                    Response.ContentType = "appliction/octet-stream";
                    Response.WriteFile(file.FullName);
                    Response.End();
                }
                else
                {
                    Response.Write("<font color='#ff0000'>您要下载的报表文件不存在,请联系管理员。</font>");
                }


 

以上给出关键代码,供大家参考。

ASP.NET:EXCEL找不到文件、权限不够之综合解决方案

错误信息:找不到“xxx.xls”。请检查文件名的拼写,并验证文件位置是否正确。 错误信息:Excel 无法访问“XXX.xls”。该文档可能为只读或加密文档。 如果您正试图从最近使用的文件列表...

ASP.Net 文件上传大小限制解决方案修改IIS7/7.5配置

在网上找到一个开源的Brettle.Web.NeatUpload.在公司IIS5.1上用都好使到客户的Windows 2008 server IIS7上就不好用了.在网上看到一个解决办法但我没找到里面...

删除文件目录导致ASP.NET Session丢失的解决方案

最近从测试人员反馈过来的bug中,发现了一个问题,那就是session丢失的问题,session为什么会丢失呢?session一般会在什么时候丢失呢?丢失了我们改怎么处理呢? 一、现象      ...

ASP.Net 文件上传大小限制解决方案修改IIS7/7.5配置

在网上找到一个开源的Brettle.Web.NeatUpload.在公司IIS5.1上用都好使到客户的Windows 2008 server IIS7上就不好用了.在网上看到一个解决办法但我没找到里面...

Asp.Net Server.Execute、Server.Transfer报“执行子请求时出错”解决方案

我们一般会自定义自己的HttpHandler来处理一些特殊的业务,往往需要在方法ProcessRequest中调用其他的实现IHttpHandler的Page页或ashx一般处理文件并获取响应结果继续...

ASP.NET检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败 的解决方案

出现此问题的原因:调用EXCEL组件时没有权限   1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"   2.依次双击"组件服务"->"计算机"->"我的电脑"->"DCO...

[ASP.net教程] 新浪OAuth网站登陆连接,请求access_token时遇到21323 miss client id or secret 的解决方案

ios 借鉴下: 本文的环境仅仅是针对最新的新浪oauth2.0, 早期的1.0方式我不太了解,也不在本文的范畴内。 解决方案给出两种: 1,描述解决思路,各位自己去实现。  2,给出我开发好...

ASP.NET中使用Eval()函数绑定数据时,不能使用IF进行逻辑判断的解决方案

转自:http://www.cnblogs.com/jinho/archive/2010/04/17/1714317.html     很多次,我在使用ASP.NET数据绑定控件中绑定数据时 使...

C#.net文件批量上传解决方案附下载(swfupload)

因为最近项目需要多文件同时上传所以自己在网上找了下方法。swfupload做到了,所以我把我的C#.net环境的多文件同时上传共享给大家!(本实例最大只能上传500M的数据,如需要上传更大的下面会告诉...
  • charrys
  • charrys
  • 2011年08月15日 09:04
  • 1400
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net 文件下载时,出现非法路径解决方案
举报原因:
原因补充:

(最多只允许输入30个字)