• 将不确定变成确定~Uri文本文件不用浏览器自动打开,而是下载到本地


    回到目录

    这个标题有点长,简单来说就是,对于一个文件下载来说,是否可以提示用户,让它去保存,而不是将它在浏览器中打开,在浏览器中打开有个致命问题,那就是,如果你的页面编码和文件的编码不一致时,打开的就是乱码,本文事实上主要解决的就是这个问题。

    上面的URI格式的文件直接使用浏览器打开,由于文件编码是GB2312而网页编码是UTF-8,所以,页面上的文字就变成了乱码。

    知道了产生问题的根源之后,我们再来解决它,首先,我们没法去控制URI上的文件编码,所以,我们只能把它读到本地(WWW服务器),然后再进行二次组织,并返回到客户端(自己的浏览器),对于URI的文件来说,我们不能直接返回,必须把它读成流之后,再返回,其实,.net为我们已经封装的很简便了,下面是实现的代码,大家看一下:

           /// <summary>
            /// 下载文件,同步支持本地和URI的文件
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public ActionResult DownLoad(string path)
            {
                if (path.IndexOf("http://") < 0)
                {
                    string localPath = Server.MapPath("/" + path);
                    string contentType = MimeMapping.GetMimeMapping(localPath);
                    return File(localPath, contentType, "下载文件");
                }
                else
                {
                    HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(path);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream stream = response.GetResponseStream();
                    var contentType = response.ContentType;//获得文件的总大小
                    return File(stream, contentType, "下载文件");
                }
            }

    下载是视频截图:

    回到目录

  • 相关阅读:
    特征归一化
    什么是端到端(end2end)学习?
    RSA加密原理及其证明
    python脚本中__all__变量的用法
    洛谷 1108 低价购买
    洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup
    洛谷 1365 WJMZBMR打osu! / Easy
    洛谷 2759 奇怪的函数
    洛谷 2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
    牛客网NOIP赛前集训营 提高组 第5场 T2 旅游
  • 原文地址:https://www.cnblogs.com/lori/p/3914835.html
Copyright © 2020-2023  润新知