一点简单的关于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下载的更多相关文章

  1. 简单的三层asp.net webForm使用Ninject实现Ioc

    简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ...

  2. phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识

    16:45 2015/12/8phpunit测试学习 1:一点简单的扼要有用的东西的总结  一点入门认识 具体的入门安装和入门实践请参照文中的推荐博客或网上其他博客推荐博客,我感觉这几篇博客写得很不错 ...

  3. Asp.Net下载页面,并弹出下载提示框

    Asp.Net下载页面,并弹出下载提示框.在删除按钮里调用以下方法.

  4. Asp.Net 下载文件的几种方式

    asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...

  5. 一个简单的利用 WebClient 异步下载的示例(三)

    继续上一篇 一个简单的利用 WebClient 异步下载的示例(二) 后,继续优化它. 1. 直接贴代码了: DownloadEntry: public class DownloadEntry { p ...

  6. 一个简单的利用 WebClient 异步下载的示例(二)

    继上一篇 一个简单的利用 WebClient 异步下载的示例(一) 后,我想把核心的处理提取出来,成 SkyWebClient,如下: 1. SkyWebClient 该构造函数中 downloadC ...

  7. 一个简单的利用 WebClient 异步下载的示例(一)

    继上一篇文章 一个简单的利用 HttpClient 异步下载的示例 ,我们知道不管是 HttpClient,还算 WebClient,都不建议每次调用都 new HttpClient,或 new We ...

  8. 一个简单的利用 HttpClient 异步下载的示例

    可能你还会喜欢 一个简单的利用 WebClient 异步下载的示例  ,且代码更加新. 1. 定义自己的 HttpClient 类. using System; using System.Collec ...

  9. Asp.net MVC 简单实现生成Excel并下载

    由于项目上的需求,需要导出指定条件的Excel文件.经过一翻折腾终于实现了. 现在把代码贴出来分享 (直接把我们项目里面的一部份辅助类的代码分享一下) 我们项目使用的是Asp.Net MVC4.0模式 ...

随机推荐

  1. 北大ACM(POJ1007-DNA Sorting)

    Question:http://poj.org/problem?id=1007 问题点:逆序数及快排. Memory: 248K Time: 0MS Language: C++ Result: Acc ...

  2. 北大ACM(POJ1006-Biorhythms)

    Question:http://poj.org/problem?id=1006 问题点:孙子定理 Memory: 248K Time: 0MS Language: C++ Result: Accept ...

  3. 大数阶乘(c语言)

    大数阶乘.代码比较简单. #include<stdio.h> #include<string.h> #define MAXN 25000 // 如果你的阶乘N比较大,建议大一点 ...

  4. linux 环境变量的设置【转】

    现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作为开 ...

  5. 洛谷 P3374 【模板】树状数组 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  6. PSP编程初探 Hello World

    自己有一台PSP2000,玩了这么长时间的游戏,所以打算去探究一下PSP这个平台的程序的构建方式. 在网上搜了很多资料,感觉能用上的不多,毕竟这太小众了,通过自己的探索,总结了一下. 先搭建MinGW ...

  7. 3月7日 Maximum Subarray

    间隔2天,继续开始写LeetCodeOj. 原题: Maximum Subarray 其实这题很早就看了,也知道怎么做,在<编程珠玑>中有提到,求最大连续子序列,其实只需要O(n)的复杂度 ...

  8. SQL语句执行顺寻

    SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需 ...

  9. Mysql多表查询(两张独立表,一张关系表)

    一.数据库设计 1.三个数据表长这样   其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系   2.具体数据如下   二.查询目标 查询出所有性别为“男”的 ...

  10. Hbase 0.95.2介绍及下载地址

    HBase是一个分布式的.面向列的开源数据库,该技术来源于Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件系统(File System) ...