一点简单的关于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模式 ...
随机推荐
- Miniui updateRow更改列字段值
当UPC等于upccode时,更改列Scanned+1 //先grid.findRow找到UPC等于upccode的行对象 var row = grid.findRow(function (row) ...
- 使用MSBUILD 构建时出错 error MSB3086: Task could not find "sgen.exe" using the SdkToolsPath的解决方法
如果项目有添加有WB引用,比如引用其它网站的WEB服务等,那么VS在编译时会自动生成个 [项目名称].Serializers.dll的文件,就是把引用服务中的相关对象信息生成硬编码的程序集,以提高效率 ...
- 6步图文教你优化myeclipse2014
MyEclipse 2014优化速度方案仍然主要有这么几个方面:去除无需加载的模块.取消冗余的配置.去除不必要的检查.关闭更新. 第一步: 去除不需要加载的模块 一个系统20%的功能往往能够满足80% ...
- 【学习笔记】【C语言】常量
1. 什么是常量 常量,表示一些固定的数据 2. 常量的分类 1> 整型常量(int) 包括了所有的整数,比如6.27.109.256.-10.0.-289等 2> 浮点型常量(float ...
- php连接到数据库
html代码: <form action="php_mysql_add.php" method="post"> 用户名: <input typ ...
- js动态添加事件
转载的,但不明确出处 往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用.方法一.setAttributevar obj = document. ...
- MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互
在<MiZ702学习笔记7——尝试自制带总线IP>,我曾提到了AXI4-Lite的简单用法,驱动了下流水灯,只涉及到了写总线.今天,我想利用之前的VGA模块,将AXI4-Lite的读写都应 ...
- 深入探析koa之异步回调处理篇
在上一篇中我们梳理了koa当中中间件的洋葱模型执行原理,并实现了一个可以让洋葱模型自动跑起来的流程管理函数.这一篇,我们再来研究一下koa当中异步回调同步化写法的原理,同样的,我们也会实现一个管理函数 ...
- Java一些常见的出错异常处理
一些平时常见的错误及解决办法,我 是新手,每次遇到的错误都记录了下来. 1. 404错误 description The requested resource (/Struts2_0100_Intro ...
- (转载)浅谈我对DDD领域驱动设计的理解
原文地址:http://www.cnblogs.com/netfocus/p/5548025.html 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来 ...