一点简单的关于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模式 ...
随机推荐
- web服务器内置对象,或者说是ServletAPI的实例
final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; // ...
- Incorporating ASP.NET MVC and SQL Server Reporting Services, Part 1
Your ASP.NET MVC application needs reports. What do you do? In this article, I will demonstrate how ...
- IE6的position:fixed
手头一个项目中,要实现把一个浮层控制在浏览器窗口右下角,用”position:fixed”来控制最合适不过了. 但万恶的IE6不支持这个属性,之前采用过的方法有:将滚动条转移到body上,使用绝对定位 ...
- Java对象初始化详解(转)
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
- change
#include<iostream> using namespace std; int main() { double a; cin>>a; cout<<a< ...
- [转]Linux 分区 swap
如何合理设置Linux的swap分区 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://commandos.blog.51cto.c ...
- Oracle10G的Sga_max_size和sga_target应该如何设置啊!
1调整原因 我们的客户反应现在我们公司的软件使用起来比较漫.目前他们已经用快要两年了.根据用户反应的情况,公司派我到现场做数据库调优.我在现场走访了几个部门,也向操作人员了解了一些情况.我初步分析认定 ...
- php后台如何避免用户直接进入方法实例
这篇文章介绍了php后台如何避免用户直接进入方法实例,有需要的朋友可以参考一下 1)创建BaseController控制器继承Controller(后台的一切操作要继承BaseController): ...
- 重拾C,一天一点点_3
按位运算 C语言提供了6个位操作运算符,只能作用于整型操作数,即只作用于带符号或无符号的char.short.int.long. & 按位与(AND) ! 按位或(OR) ^ ...
- Sorl之java操作
参考教程: http://www.cnblogs.com/xia520pi/p/3625232.html http://www.cnblogs.com/hujunzheng/p/5647896.htm ...