asp.net 大文件 下载
一个可尝试的方案,使用二进制流下载,下载地址是诸如 http://www.abc.com/down.apsx?fileid=911199 这样的连接,在 down 页面进行权限判断,比如是否登录了,当前用户的点数是否满足 911199 对应的文件的下载点数 等等
二进制下载实例代码,支持特大文件下载
string downFilePath = @ "D:\openSUSE-10.2-GM-DVD-i386.iso "; // test with 3.8GB, ok // Server.MapPath( "~/files/somefile.iso ");
System.IO.FileInfo downFileInfo = new System.IO.FileInfo(downFilePath);
if (!downFileInfo.Exists) throw new Exception( "文件不存在。 ");
const int CHUNK_SIZE = 10000; // 指定块大小
byte[] buffer = new byte[CHUNK_SIZE];
Response.Clear();
// fails to down the big file with both the following methods
// error: System.ArgumentOutOfRangeException: 大小参数必须介于零和最大的 Int32 值之间。
// Response.WriteFile(downFilePath);
// OR
// Response.TransmitFile(downFilePath); // ASP.NET 2.0 supported
//
using (System.IO.FileStream iStream = System.IO.File.OpenRead(downFilePath)) {
long dataLengthToRead = iStream.Length;
Response.ContentType = "application/octet-stream ";
Response.AddHeader( "Content-Disposition ",
"attachment; filename= " + Server.UrlPathEncode(downFileInfo.Name)); // 对文件名进行编码
while (dataLengthToRead > 0 && Response.IsClientConnected) {
int lengthRead = iStream.Read(buffer, 0, CHUNK_SIZE);
Response.OutputStream.Write(buffer, 0, lengthRead);
Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
}
Response.Close();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
2011-05-09 术语汇编 UML用例图简介
2011-05-09 概要设计说明书(转)