一点简单的关于ASP.NET下载
一点简单的关于ASP.NET下载
个人简单的认为是有两种方法的,第一种就是直接用一个超链接链接到我们要下载的资源就可以了。只是说这个方法会有一点小问题就是,比如像图片或者文本文件这些浏览器是可以自动将其解析出来的,这样的话会直接将图片或者文本文件直接打开显示,而不告诉你是否保存什么的。显示这个方法是不够好的。那么第二种方法就是用上一般处理程序。这个就可以很好的解决这个问题了。然后,我就大概写一个关于用一般处理程序的下载。
我是决定这样做的,就是先写一个页面,里面有一些超链接,链接到一般处理程序那里,并将要下载的文件名当参数传递过去。然后有时候下载的东西可能不存在,就小做一个判断,如果文件存在,到时就下载成功,倘若不存在的话,就给用户弹出一个窗口,告诉之,文件不存在且下载失败这个样子。为表在此种情况,我也弄了一个不存在的一个文件。那么那个页面的代码的图如下:

而一般处理程序的代码如下:

这样就做到当我们点击的是确实存在的文件,无论是浏览器可以解析或者解析不出来的时候,都会下载,而不是直接将文件文件或者图片什么的直接弹出来。而且既使下载的文件有中文也不会乱码,如同10月1日那样。也就是这样:
。当我们点击的是不存在的文件的时候,也就是我试验的那个,则会非常遗憾的这样:
。
然后就稍微小结一下上面的代码吧。比如一般处理程序的那个图的第21行,上面有写到request.Params,那么就说一下它以及关于它的一点小拓展。request.Params是所有get过来和post传过来的所有的集合。request.Params是先在QueryString集合(也就是get传值)里找数据,若找到就返回之,若找不到就到Form集合(也就是post传值)中去找,若找到,则返回,若找不到就到下一个集合里去找,至于是哪个集合,我这边也忘了。大概就是这个样子的。
另外就是我写入文件的那行代码,不能只写成了name,犯这样的低级错误。上图中已有红笔注释。
And,File.Exist()方法是判断文件是否存在,而Directiry.Exist是判断文件夹是否存在,这个简单的就不要记错了。
修改报文头那几个参数,第一个就是写“Content-Disposition”,这是固定的,第二个就是表示这是一个附件,第三个就是写下载的名字,注意一下最后一个我们可能会下载的有中文名字的文件,用那个方法,就可以将其转码一下,不至于下载的名字乱码,目前我发现的是谷歌不筹码,但IE是会乱码或者是不显示下载的是什么东西的,比如我下载的10月1日,它则会这样:
,没有乱码,但没有显示下载的是什么。谷歌则会这样:
,是会有名字显示的。而当写了最后那个转码的代码后,IE则会这样:
,对比上面的,也就我发现了这样就将汉字也给解析出来了,且显示出来了。所以最后还是要加上那个转码的代码。
然后,也就这些了,欢迎批评指正。共同进步。
一点简单的关于ASP.NET下载的更多相关文章
- 简单的三层asp.net webForm使用Ninject实现Ioc
简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ...
- phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识
16:45 2015/12/8phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识 具体的入门安装和入门实践请参照文中的推荐博客或网上其他博客推荐博客,我感觉这几篇博客写得很不错 ...
- Asp.Net下载页面,并弹出下载提示框
Asp.Net下载页面,并弹出下载提示框.在删除按钮里调用以下方法.
- Asp.Net 下载文件的几种方式
asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...
- 一个简单的利用 WebClient 异步下载的示例(三)
继续上一篇 一个简单的利用 WebClient 异步下载的示例(二) 后,继续优化它. 1. 直接贴代码了: DownloadEntry: public class DownloadEntry { p ...
- 一个简单的利用 WebClient 异步下载的示例(二)
继上一篇 一个简单的利用 WebClient 异步下载的示例(一) 后,我想把核心的处理提取出来,成 SkyWebClient,如下: 1. SkyWebClient 该构造函数中 downloadC ...
- 一个简单的利用 WebClient 异步下载的示例(一)
继上一篇文章 一个简单的利用 HttpClient 异步下载的示例 ,我们知道不管是 HttpClient,还算 WebClient,都不建议每次调用都 new HttpClient,或 new We ...
- 一个简单的利用 HttpClient 异步下载的示例
可能你还会喜欢 一个简单的利用 WebClient 异步下载的示例 ,且代码更加新. 1. 定义自己的 HttpClient 类. using System; using System.Collec ...
- Asp.net MVC 简单实现生成Excel并下载
由于项目上的需求,需要导出指定条件的Excel文件.经过一翻折腾终于实现了. 现在把代码贴出来分享 (直接把我们项目里面的一部份辅助类的代码分享一下) 我们项目使用的是Asp.Net MVC4.0模式 ...
随机推荐
- 每日一词【命令行CMD】
CURL 中文:命令行URL下载 英文解释:CommendLine Uniform Resource Locator 使用场景: 文件传输 curl是利用URL语法在命令行方式下工作的开源文件传输工具 ...
- MongoDB - MongoDB CRUD Operations, Query Documents
Query Method MongoDB provides the db.collection.find() method to read documents from a collection. T ...
- XAML
XAML定义 XAML是一种相对简单.通用的声明式编程语言,它适合于构建和初始化.NET对象. XAML仅仅是一种使用.NET API的方式,把它与HTML.可伸缩向量图形(SVG)或其他特定领域的格 ...
- CSS里的引用@import、link
引入CSS的方法有两种,一种是@import,一种是link @import url('地址');<link href="地址" rel="stylesheet&q ...
- ORACLE-树状数据结构获取各层级节点信息
平时工作中出报表时,要求分别列出员工的一级部门,二级部门....,在数据库中,部门表(unit)的设计一般为在表中维护每个部门的上级部门(pid字段),或者通过一个关联表(unit_link)维护层级 ...
- JavaScript学习笔记 - 进阶篇(2)- 数组
什么是数组 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果需要存储更多数据,那就会变的更麻烦.我们用数组 ...
- Memcached解决单台服务器故障问题
<beitmemcached> <add key="name1" value="server1:port" /> <add key ...
- gcc常用选项
gcc选项: -c 只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件. -std= 指 ...
- Andriod docs加载速度慢的问题解决
网上找了个类, import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ja ...
- table总结insertRow、deleteRow
表格有几行: var trCnt = table.rows.length; (table为Id ) 每行有几列:for (var i=0; i<trCnt; i++) ...