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

下载是视频截图:

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变成确定~Uri文本文件不用浏览器自动打开,而是下载到本地,如需转载请自行联系原博主。

时间: 2024-08-26 10:38:11

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

phpstorm,有谁用过,如何直接在控制台中调试不用每次都打开浏览器。详情看图

问题描述 phpstorm,有谁用过,如何直接在控制台中调试不用每次都打开浏览器.详情看图 http://b.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=6acf8d2840a98226b8942321bab29539/c8177f3e6709c93df1c401aa9c3df8dcd10054bc.jpg 解决方案 可以的,你在run下面的editorconfiguration里面找到 app engine for php 然后看右边第一行里面粘

Win8系统不用输入密码自动登录到桌面的方法

  我们在用Win8的时候,默认情况下每次登陆时都是需要输入用户名和密码的,这样对一些渴望更加便利地使用电脑的用户来说就来得稍显麻烦.那么Win8怎样才能自动登陆呢? 步骤 1.打开运行窗口window键+R 2.输入netplwiz,确定 3.去掉"要使用计算机,用户必须输入用户名和密码"即可 通过上述的设置后,你在今后使用Win8计算机时,便不用再经过输入用户名和密码这个环节了.不过虽然这样更加便利了,但安全性也降低了.大家根据自己的需要作出决定吧.

不用防火墙自动对付CC攻击的办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 CC攻击原理 CC主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧. 一个静态页面不需要服务器多

不用防火墙自动对付CC攻击防范vbs_win服务器

CC攻击原理 CC主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧. 一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的

无线路由器的妙用 不用开电脑也能下载

家中的无线路由器似乎永远默默地躺在角落工作,人们除了使用它提供的无线网络外,对其它功能并没有报以期待.纵观市场上的无线路由不难发现,现在许多无线路由器都提供了USB接口,可以连接移动存储设备,如U盘.移动硬盘.除了可以搭建一个简单的私有云,将其中的音视频或图片文件进行分享外,还可以实现远程下载和脱机下载的功能.   无线路由器外接存储设备 一般这一功能可以通过迅雷远程下载插件和百度云插件实现,也有高端的无线路由器内置下载这一功能.智能路由器很多都可以安装这下载插件,可以通过移动端或者WEB端给无

【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件

项目部署在服务期上之后,有了新的需求,需要每月定时备份mysql数据库的所有数据! 查找了网上的多篇文章之后,自己又对bat文件中的mysqldump语句进行改进,可以实现了不用输入密码就能自动定时备份数据库的功能! 下面就先以每天自动备份作为例子,将整个流程展示出来: 1.首先一点,你现在一个固定的地方,新建一个bat文件,用于系统的任务计划进程去执行bat中定义的相关操作! 因为是备份mysql数据库,所以我将bat文件新建在mysql的安装目录的bin目录下: 新建back_db.bat文

将不确定变为确定系列~目录(“机器最能证明一切”)

本系列文章主要是我在工作中,遇到一些不能主观判断的问题,最后在电脑上去证明我的理解是否正确,这也是题目"将不确定变成确定"的由来. 记得我在上大学时,老师说过一句话:"机器最能证明一切",这句话现在看来,确实很经典. 将不确定变为确定系列~目录("机器最能证明一切") 第一回 将不确定变成确定~类中的override 第二回 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 第三回 将不确定变成确定~frameset页面不

Java魔法堂:URI、URL(含URL Protocol Handler)和URN

一.前言   过去一直搞不清什么是URI什么是URL,现在是时候好好弄清楚它们了!本文作为学习笔记,以便日后查询,若有纰漏请大家指正!   二.从URI说起    1. 概念   URI(Uniform Resource Identifier,统一资源标识符)以字符串来表示某种资源的统一资源标识.   格式为: [scheme:]scheme-specific-part[#fragment]    [scheme:]组件 ,URI的名称空间标识.   scheme-specific-part组件

HTTP响应的头文件影响文件下载

网站不仅仅只包含网页,有时你需要提供用户能下载的文件.将你的文件放到服务器上并在网页中附上链接只是第一步,你还需意识到HTTP响应的头文件影响文件下载. 提示一:强制下载并控制文件名 在HTML中提供一个下载链接很简单: <a href="http://download.httpwatch.com/httpwatch.exe">Download<a> 对于浏览器不知道如何呈现的二进制文件,如安装程序和ZIP文件,这工作的很好.这会出现一个对话框,允许用户将文件存