ASP.NET下文件下载时重命名

  string FileUlr = Server.MapPath( "~/images/test/"); //获取文件所在目录
        FileUlr +=  "5.jpg";/ /获取现有文件所在位置
        string OutFileName = "NewFileName";
        if ( File.Exists(FileUlr)) //判断该文件是否存在
        {
             FileInfo fi =  new  FileInfo(FileUlr);
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer =  false;
 
             string tempfile =  Path.GetFileName(FileUlr);//获取文件名称
            tempfile = OutFileName + tempfile.Substring(tempfile.LastIndexOf("."));
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
             // 这一步调试时中文文件名也是正常。
 
             string DownloadFileName = null;
             string browser =  this.Context.Request.UserAgent.ToUpper();
             if (browser.Contains ("MS") ==  true && browser.Contains ("IE") ==  true) //判断当前用户使用的浏览器类型
            {
                DownloadFileName = HttpUtility.UrlEncode(tempfile);  // 这一步调试时中文文件名也是正常。在ie中中文显示正常,但在firefox中,中文依然为
                //乱码,所以这里要判断用户使用浏览器类型,来保持中文文件名的正常显示
            }
             else if (browser.Contains("FIREFOX") == true)
            {
                DownloadFileName = "\"" + tempfile + "\"";
            }
             else
            {
                DownloadFileName = HttpUtility.UrlEncode(tempfile); // 这一步弹出下载保存的对话框,出现文件名乱码,但变量中的文件名是正常的。
            }
            Response.AppendHeader( "Content-Disposition", "attachment;filename=" + DownloadFileName); //为用户保存文件是显示的名称
            Response.AppendHeader( "Content-Length", fi.Length.ToString());
            Response.ContentType =  "application/octet-stream";
            Response.WriteFile(FileUlr); //用response来返回文件的路径
            Response.Flush(); //清空response
            Response.End();
        }
        else
        {
            Response.Write ("<script langauge=javascript>alert(‘文件不存在!’);</script>");
            Response.End();
        }

其实该方法的最核心东西就是在  Response.AppendHeader("Content-dispostion","attachment,filename="+DownloadFileName);
这块 ,Content-dispostion是mime协议的扩展,mime协议指示mime用户代理如何显示附加的文件。当Internet Explorer 接收到头时,他会激活文件下载对话框,他的文件明框自动填充了头中指定的文件名。这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户问询保存位置。当然这种情况在ie9中已不存在了,ie9会自动的保存在一开始设定好的文件夹下。ie9默认的文件保存位置为user/DownLoad文件夹下。
到这里,整个下载重命名就做好了。欢迎提取不同的意见。
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值