首先有一个html页面,页面有一个链接,点击链接弹出文件下载/保存(类似迅雷下载链接)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>文件下载</title>
<meta charset="utf-8" />
</head>
<body>
<!--该方式不行,1:如果访问的是类似文本等浏览器可以处理的文件,则是浏览器打开显示的方式,并不是文件下载;2:如果访问的是App_Data文件夹里的文件,由于.net的机制不允许访问App_Data文件夹资源,所以会报“请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径。”-->
<a href="App_Data/readme.txt">下载readme.txt文件</a>
<br />
<a href="DownloadFileHandler.ashx">下载readme.txt文件</a>
</body>
</html>

一般处理程序的代码如下

using System.IO;
using System.Web; namespace Zhong.Web
{
/// <summary>
/// DownloadFileHandler 的摘要说明
/// </summary>
public class DownloadFileHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
string filePath = context.Server.MapPath("~/App_Data/readme.txt");
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, , bytes.Length);
fs.Dispose(); context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", "attachment; filename=readme.txt");
context.Response.BinaryWrite(bytes);
context.Response.Flush(); //大文件下载的解决方案
//context.Response.ContentType = "application/x-zip-compressed";
//context.Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
//string filename = Server.MapPath("~/App_Data/move.zip");
//context.Response.TransmitFile(filename);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

点击第一个链接访问,显示如下:

点击第二个链接访问,下载文件:

由于我之前已经测试过一次,所以这次下载时命名为readme(1).txt

asp.net使用一般处理程序实现文件下载的更多相关文章

  1. Asp.net web服务处理程序(第六篇)

    四.Web服务处理程序 对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述.在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访 ...

  2. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  3. ASP.NET Core--条件处理程序中的依赖注入

    翻译如下: 在配置期间(使用依赖注入),授权处理程序必须在服务集合中注册. 假设您有一个在授权处理程序中要解析规则的仓储库,并且该仓储库已在服务集合中注册. 授权将在构造函数还原并注入. 例如,如果你 ...

  4. asp.net中一般处理程序中添加session

    asp.net中使用一般处理程序(.ashx)添加session,利用context.session["xxx"] = value的方式把值保存到session:运行的时候会出现该 ...

  5. ASP.NET Web API 2 之文件下载

    Ø  前言 目前 ASP.NET Web API 的应用非常广泛,主要承载着服务端与客户端的数据传输与处理,如果需要使用 Web API 实现文件下载,该 实现呢,其实也是比较简单,以下示例用于下载安 ...

  6. ASP.NET ASHX 一般处理程序教程

    你不想创建一个普通ASP.NET的Web窗体页.而又要通过一个查询字符串返回一个动态的图片.XML或者非HTML网页.这是一个用C#编程语言编写的使用ASHX(一般处理程序)的简单教程. 简介 首先, ...

  7. ASP.NET的一般处理程序对数据的基本操作

    TableList.ashx: <%@ WebHandler Language="C#" Class="TableList" %> using Sy ...

  8. Ajax请求ashx一般处理程序实现文件下载

    具体功能为,在文件数据列表中选择一行,点击表格上方的下载按钮,下载文件.由于表格中不包含文件路径,只能取到在数据库表中的ID,所以具体实现就是这样:首先点击一行,获取点击的一行数据的ID,用Ajax传 ...

  9. ASP.Net之一般处理程序

    1.静态语言和动态语言 静态语言:在服务器端,不会被执行,直接作为 字符串 发回给浏览器,由浏览器运行的语言( HTML+CSS+JS).   动态语言:在服务端,会被服务器端的某种语言的虚拟机执行的 ...

随机推荐

  1. BSDL

    BSDL(边界扫描描述语言)文件是使用边界扫描进行电路板级和系统级测试与在系统编程所必需的. BSDL 文件是描述一个 IC 中的 IEEE 1149.1 或 JTAG 设计电子数据表,这些文件由 I ...

  2. jquery.dataTables动态列--转

    转自 https://www.cnblogs.com/lyeo/p/4765514.html jquery.dataTables  版本1.10.7 直接上代码: 0.table <table ...

  3. springMVC中ModelAndView学写笔记

    api介绍: 构造函数摘要 ModelAndView()           bean样式用法的默认构造函数:填充bean属性,而不是传递构造函数参数. ModelAndView(Object vie ...

  4. SparkSQL简介

    1.SparkSQL的发展历程 1.1 Hive and Shark SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,Hive应运而生,它 ...

  5. 展示博客(Alpha阶段)

    Deadline: 2017-11-18 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分(满分10分),检查的项目包括后文的四个方面 团队成员介绍 Alpha阶段进展 团队合作,各成 ...

  6. 网页3D效果库Three.js学习[二]-了解照相机

    camera 上篇大致了解了three.js ,并可以创建一个简单的可动的立方体.下来我们着重了解下camera (照相机),照相机其实就是视角,就像你的眼睛.Three.js有两种不同的相机模式:直 ...

  7. 页面刷新 location.reload()

    * 页面不刷新,但是加了location.reload()后,把炒作失败提示语都刷没了.//成功,不提示,刷新看数据变化ajax success:function(res){ if(res.code= ...

  8. C# Mysql Dapper和原生sql 插入和查询速度比较

    1.表中有三个字段,已经有100多万条数据,每次插入10万条数据 时间单位:秒 秒 Dapper批量Model插入时间:40.6165513,Dapper单条Model插入时间:95.9492972, ...

  9. Enable Scribble,Enable Guard Edges,Enable Guard Malloc,Zombie Objects

    最近项目中使用一个翻拍身份证信息识别活体检测的第三方框架,在使用时会偶然性的出现崩溃的现象,经过查找是因为第三方框架中有释放的内存区域再次引用引起的,因而补充一下相关知识点.   在Xcode Edi ...

  10. THINK PHP 学习笔记20171115

    Part1:框架目录project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改) │ │ ├─co ...