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非法请求时跳转到登录页面

如题,asp.net非法请求时跳转到登录页面。在LingMind项目中我使用了母版页,因此在母版页中进行了权限的判断。如果token为null则跳转到登录页。之前由于路径写错了,导致404错误。谨记一...
  • luckysiesteven
  • luckysiesteven
  • 2015年12月31日 11:16
  • 845

Asp.net网站路径解决方案集合(转)

获取项目完整的绝对路径string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString();string path = Serve...
  • liuyuehui110
  • liuyuehui110
  • 2010年08月04日 21:46
  • 955

asp.net文件下载,实现隐藏文件下载地址

文件下载其实很简单。最简单的方式就是直接用a标签指向文件地址,但是这种方式暴露了文件的地址,不适合做积分下载。同时,如果文件为图片或者xml文件的话浏览器默认是打开文件而不是弹出下载窗口。 第二种就...
  • weizengxun
  • weizengxun
  • 2012年06月07日 01:42
  • 5258

ASP.NET获取远程网页下载到本地文件

通过ASP.NET生成静态文件的文章网上有好多文章,而本站也有不少的相关文章教程,通常ASP.NET生成静态文件的做法是使用文件流读取模板内容,之后替换模板内容中相关关键字,再生成静态文件。本文的做法...
  • mh942408056
  • mh942408056
  • 2012年03月25日 20:31
  • 3285

asp.net读取服务器物理路径下载文件

     protected void get_download(string fl_path){   try   {    string filepath = fl_path;    string ...
  • f9inux
  • f9inux
  • 2007年06月16日 12:46
  • 3803

下载文件时出现保存对话框乱码

原文网址:http://88688lin.blog.163.com/blog/static/11024818720078501010312/下载文件时出现保存对话框乱码java技术文章2007-09-...
  • huaye2007
  • huaye2007
  • 2011年04月01日 22:52
  • 3564

VS中一个解决方案有多个Web网站.如何不启动全部asp.net development server(WEB服务器)

问题如下: 解决方案: 选中不想被同时启动的web项目,按F4出现属性编辑页面,将总是在调试时启动设置为false即可,如下图所示:...
  • qq_27445903
  • qq_27445903
  • 2017年03月29日 15:32
  • 826

asp.net实现文件下载(wap手机下载)

这个问题困扰了我两天,手机下载 protected void Page_Load(object sender, EventArgs e)    {        string filename = S...
  • jenny0810
  • jenny0810
  • 2010年01月26日 17:18
  • 1571

C#(ASP.Net)获取当前路径的方法集合

//获取当前进程的完整路径,包含文件名(进程名)。  string str = this.GetType().Assembly.Location;  result: X:\xxx\xxx\xx...
  • HK_5788
  • HK_5788
  • 2015年10月05日 11:43
  • 4290

解决用ASP.NET下载文件时,文件名为乱码的问题

关键就一句:                    string strTemp = System.Web.HttpUtility.UrlEncode(strName, System.Text.Enc...
  • hurtmanzc
  • hurtmanzc
  • 2006年06月09日 13:53
  • 7264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net 文件下载时,出现非法路径解决方案
举报原因:
原因补充:

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