asp.net里,各种下载方式汇总


 1         /// <summary>
2 /// 下载文件 TransmitFile
3 /// </summary>
4 /// <param name="filePath"></param>
5 public static void DownloadFile(string filePath)
6 {
7 string filename = HttpContext.Current.Server.MapPath(filePath);
8 var response = HttpContext.Current.Response;
9 response.ContentType = "application/x-zip-compressed";
10 response.AddHeader("Content-Disposition", "attachment;filename=" + Path.GetFileName(filename) );
11 response.TransmitFile(filename);
12 }
13
14 /// <summary>
15 /// 下载大文件
16 /// </summary>
17 /// <param name="filePath"></param>
18 public static void DownloadBigFile(string filePath)
19 {
20 filePath = HttpContext.Current.Server.MapPath(filePath);//路径
21 string fileName = Path.GetFileName(filePath);//客户端保存的文件名
22 var response = HttpContext.Current.Response;
23 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
24 if (fileInfo.Exists == true)
25 {
26 const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
27
28 byte[] buffer = new byte[ChunkSize];
29
30 response.Clear();
31 System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
32 long dataLengthToRead = iStream.Length;//获取下载的文件总大小
33 response.ContentType = "application/octet-stream";
34 response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
35 while (dataLengthToRead > 0 && response.IsClientConnected)
36 {
37 //读取的大小 Response.OutputStream.Write(buffer, 0, lengthRead);
38 int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));
39 response.Flush();
40 dataLengthToRead = dataLengthToRead - lengthRead;
41 }
42
43 response.Close();
44 }
45 }
46
47 /// <summary>
48 /// 流方式下载
49 /// </summary>
50 /// <param name="filePath"></param>
51 public static void DownloadFileStream(string filePath)
52 {
53 filePath = HttpContext.Current.Server.MapPath(filePath);//路径
54 string fileName = Path.GetFileName(filePath);//客户端保存的文件名
55 var response = HttpContext.Current.Response;
56 FileStream fs = new FileStream(filePath, FileMode.Open);
57
58 byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length);
59
60 fs.Close();
61 response.ContentType = "application/octet-stream";
62 //通知浏览器下载文件而不是打开
63 response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
64 response.BinaryWrite(bytes);
65 response.Flush();
66 response.End();
67 }
68
69 /// <summary>
70 /// 将文本作为某文件下载
71 /// </summary>
72 /// <param name="text"></param>
73 /// <param name="fileName"></param>
74 public static void DownloadText(string text , string fileName)
75 {
76 byte[] bytes = Encoding.Default.GetBytes(text);
77 var response = HttpContext.Current.Response;
78 response.ContentType = "application/octet-stream";
79 //通知浏览器下载文件而不是打开
80 response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
81 response.BinaryWrite(bytes);
82 response.Flush();
83 response.End();
84 }

asp.net里,各种下载方式汇总

时间: 2024-10-10 10:29:07

asp.net里,各种下载方式汇总的相关文章

STM32单片机程序下载方式汇总

一.串口下载: 1.MCUISP串口软件一键下载设置: DTR低电平复位,RTS高电平进入bootload串口下载 在ch340芯片对应DTR和RTS输出电平与电脑软件设置的电平相反.一键下载电路根据ch340芯片对应引脚的控制信号完成对应功能具体实现过程如下: 2.单片机启动设置单片机低电平复位 Boot0=0,boot1=x,从用户区flash启动Boot0=1,boot1=0,进入串口下载区Boot0=1,boot1=1,从SRAM启动改变boot0电平就可以从不同区域启动 3.一键下载电

Asp.net页面跳转方式汇总

一.超链接 1.使用<a>标签 <a href="URL"></a> 2.使用Hyperlink控件实现 <span style="white-space:pre"> </span>Hyperlink h1=new Hyperlink(); <span style="white-space:pre"> </span>h1.NavigateUrl="URL

Android与Asp.Net Web服务器的文件上传下载BUG汇总【更新】

遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是:(1)文件名称中含有不符合规范的字符,比如“:”,“?”或者空格等.(2)需要先创建文件夹目录再创建文件,不能直接创建文件. 2. android.os.NetworkOnMainThreadException异常,从服务器请求数据后,写入文件时报错 出错原因:在主线程内执行了访问http的操作,最

《转》最受欢迎的ASP.NET的CMS下载

1. Umbraco 项目地址 | 下载 Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbraco ,设计师能创造出有效的XHTML标记模板和开发人员可以创建任何基于.Net的模块.主要特点包括: 漂亮,友好的用户界面 综合所见即所得编辑器 支持编辑在Microsoft Word 全部源代码可用(开放源代码) 超级简单的模板引擎 完全支持Web标准 2. N2 Core Engine 项目地址 | 下载N2是一款轻量级的cms框架

Android中三种超实用的滑屏方式汇总(转载)

Android中三种超实用的滑屏方式汇总 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow 一.ViewPager 官方文档介绍:http://developer.android.com/reference/

ASP.NET导出excel表方法汇总

asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) { HttpResponse resp; resp = Page.Response; resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Di

asp.net core 自定义认证方式--请求头认证

原文:asp.net core 自定义认证方式--请求头认证 asp.net core 自定义认证方式--请求头认证 Intro 最近开始真正的实践了一些网关的东西,最近写几篇文章分享一下我的实践以及遇到的问题. 本文主要介绍网关后面的服务如何进行认证. 解决思路 网关可以做一部分的认证和授权,服务内部有时候也会需要用户的信息,这时该怎么办呢,我们使用的是 JWT 认证,有一个 identity server去颁发,验证 token,一种简单方式可以把 token 直接往后传,传递给后面的具体某

ASP.NET MVC 5 入门指南汇总

经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解,全文最终完成了一个管理影片的小系统,非常适合新手入门ASP.NET MVC 5 (新增.删除.查询.更新) ,并由此开始开发工作. 现将12篇文章汇总如下: 1. ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 -

[转]SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介

之前写过一篇短文对比过几种数字高程数据的区别:5种全球高程数据对比,这篇文章简要介绍下如何下载这些数据. 1.DLR的数字高程数据.该数据也是SRTM(shuttle radar topography mission,航天飞机雷达地形测绘任务)数据,一般提到SRTM都是指NASA在2000年利用奋进号跑出来的数字高程数据,覆盖全面.公开数据早.精度在今天仍相当可观,所以更加有名.但SRTM并不只专指这一家,当年德国航天局DLR同在奋进号上用自己的雷达搞地形测绘,美国人用的C波段雷达,德国人用的X