将不确定变成确定~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, "下载文件");
            }
        }
复制代码

下载是视频截图:

回到目录

posted @   张占岭  阅读(1868)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2012-08-15 LINQ-to-SQL那点事~耳目一新的partial class 和 partial method
2012-08-15 LINQ-to-SQL那点事~目录
点击右上角即可分享
微信分享提示