`

asp.net中实现文件下载功能

 
阅读更多
//TransmitFile实现下载
protected void Button1_Click(object sender, EventArgs e)
{
/*
微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
代码如下:
*/

Response.ContentType
= "application/x-zip-compressed";
Response.AddHeader(
"Content-Disposition", "attachment;filename=z.zip");
string filename = Server.MapPath("DownLoad/aaa.zip");
Response.TransmitFile(filename);
}

//WriteFile实现下载
protected void Button2_Click(object sender, EventArgs e)
{
/*
using System.IO;

*/

string fileName ="aaa.zip";//客户端保存的文件名
string filePath=Server.MapPath("DownLoad/aaa.zip");//路径

FileInfo fileInfo
= new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader(
"Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader(
"Content-Length", fileInfo.Length.ToString());
Response.AddHeader(
"Content-Transfer-Encoding", "binary");
Response.ContentType
= "application/octet-stream";
Response.ContentEncoding
= System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}

//WriteFile分块下载
protected void Button3_Click(object sender, EventArgs e)
{

string fileName = "aaa.zip";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

System.IO.FileInfo fileInfo
= new System.IO.FileInfo(filePath);

if (fileInfo.Exists == true)
{
const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];

Response.Clear();
System.IO.FileStream iStream
= System.IO.File.OpenRead(filePath);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
Response.ContentType = "application/octet-stream";
Response.AddHeader(
"Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
while (dataLengthToRead > 0 && Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
Response.OutputStream.Write(buffer, 0, lengthRead);
Response.Flush();
dataLengthToRead
= dataLengthToRead - lengthRead;
}
Response.Close();
}
}

//流方式下载
protected void Button4_Click(object sender, EventArgs e)
{
string fileName = "aaa.zip";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes,
0, bytes.Length);
fs.Close();
Response.ContentType
= "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();

}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    asp.net 实现图片下载功能

    在ASP.NET中实现图片下载功能是一项常见的需求,尤其是在构建网站时提供用户下载资源。与简单的文本或文件链接不同,图片通常会被浏览器解析并显示,而不是触发下载。本篇将详细介绍如何在ASP.NET环境下构建一个有效...

    asp.net批量打包下载文件

    通过以上步骤,你可以在ASP.NET MVC中实现批量打包下载的功能。提供的代码片段虽然简略,但展示了关键的实现思路。实际应用中,还需要结合项目具体需求进行扩展和完善。记住,始终关注代码的可读性、可维护性和安全...

    实现在asp.net中调用打印功能

    描述 "实现在 asp.net 中调用打印功能 简单地整理了些资料" 表明,这篇文章将简单地整理了一些相关的资料,以便帮助读者快速了解如何在 ASP.NET 中实现打印功能。 标签解释 标签 "asp.net 打印 功能" 表明,这篇...

    ASP.NET 实现的上传下载功能

    总之,ASP.NET提供了强大的支持来实现文件上传和下载功能。通过理解和实践这些技术,你可以创建一个稳定且用户友好的文件管理系统。在实际项目中,还需要根据业务需求进行定制和优化,以确保系统的安全性和性能。

    基于ASP.NET文件上传、下载的网络硬盘系统 源码

    2. **文件上传组件**:在ASP.NET中,`HttpFileUpload`控件是实现文件上传的核心组件。通过在HTML表单中添加该控件,用户可以选择本地文件并提交到服务器。服务器端的代码则负责接收文件,通常使用`Request.Files`...

    ASP.NET MVC 文件管理功能Demo

    ASP.NET MVC 文件管理功能Demo是基于ASP.NET MVC框架和Easy-UI前端库开发的一个实践项目,旨在实现对本地文件系统的全面操作。这个Demo涵盖了多种文件操作功能,包括上传、下载、复制、粘贴、压缩以及重命名等,使得...

    asp.net 批量上传文件

    在这个场景下,我们可以使用jQuery库中的`jquery.form`插件来增强页面的交互性,并结合ASP.NET后端技术,实现异步、无刷新的批量文件上传功能。下面我们将详细探讨这个过程中的关键知识点。 首先,`jQuery.form`...

    【ASP.NET编程知识】Asp.net实现MVC处理文件的上传下载功能实例教程.docx

    ASP.NET MVC 实现文件上传下载功能实例教程 一、概述 在 ASP.NET 程序开发中,文件上传和下载功能非常常见。 Asp.net.Mvc 框架提供了多种方式来实现文件上传和下载功能。本文将通过实例形式来实现文件上传和下载...

    基于ASP.net的企业文件管理系统源码.zip

    对于学习者或开发者来说,这是一个极好的资源,可以深入理解ASP.NET如何应用于企业级文件管理系统的实现,以及如何利用C#(ASP.NET的主要编程语言)来设计和实现文件管理功能。 【标签】:“毕业设计 C# Java PHP”...

    【ASP.NET编程知识】ASP.NET Core文件上传与下载实例(多种上传方式).docx

    使用 ASP.NET Core 的文件上传机制,可以实现多文件上传、文件大小限制、文件类型限制等功能。此外,还可以使用 TagHelper 来简化表单的编写。 知识点6: 文件下载的实现 文件下载的实现可以使用 FileResult 来返回...

    【ASP.NET编程知识】Asp.Net Core实现Excel导出功能的实现方法.docx

    在 ASP.NET Core 中实现 Excel 导出功能需要掌握 ClosedXML 的使用方法,以及 ASP.NET Core 中的文件下载机制。通过本篇文章,可以了解如何使用 ClosedXML 将数据导出成 CSV 文件和 XLSX 文件,并且可以根据需要...

    asp.net多文件下载 MVC多文件下载

    通过以上步骤,你可以在ASP.NET MVC项目中实现多文件下载的功能。请记住,实际的实现可能需要根据项目的需求和具体环境进行调整。在Testsite项目中,你可以找到相关的代码示例和配置,帮助你更好地理解和应用这些...

    asp.net 导出 pdf 文件

    在本篇文章中,我们将深入探讨如何在 ASP.NET 环境下实现 PDF 的生成与导出。 首先,我们需要了解 ASP.NET 提供的一些基本工具和技术。ASP.NET 是微软推出的一种用于构建 Web 应用程序的框架,它支持多种编程语言,...

    ASP.NET 实现 上传下载案例

    在这个“ASP.NET 实现上传下载案例”中,我们将探讨如何使用ASP.NET来实现文件的上传和下载功能。 首先,让我们了解上传功能的实现。在ASP.NET中,我们可以使用`<asp:FileUpload>`控件来让用户选择要上传的文件。...

    asp.net C# 利用FTP 远程下载文件

    总的来说,通过利用C#的`System.Net`命名空间,你可以方便地在ASP.NET环境中实现FTP远程文件下载功能,为用户提供高效、安全的文件获取服务。在实际开发中,还需要考虑错误处理、性能优化以及安全性等问题,确保应用...

    【ASP.NET编程知识】asp.net单文件带进度条上传的解决方案.docx

    在本文中,我们使用ASP.NET缓存机制来实现文件上传进度条的显示。ASP.NET缓存机制能够帮助我们缓存文件上传的信息,从而实现进度条的显示。在本文中,我们使用ASP.NET缓存机制来缓存文件上传的信息,然后使用ajax...

    asp.net+Ajax实现Excel文件导出

    本篇文章将详细讲解如何利用ASP.NET与Ajax技术实现在Web应用中导出Excel文件。 首先,ASP.NET是Microsoft开发的一个用于构建动态网站、Web应用程序和服务的框架。它基于.NET Framework,提供了丰富的服务器控件、...

    Asp.Net实现下载功能

    在你提供的压缩包文件列表中,有一个名为"Asp.Net实现下载功能.txt"的文件。这可能是详细步骤或者示例代码,你可以参考其中的内容进一步了解和实践Asp.Net实现下载功能的具体细节。 总的来说,Asp.Net结合C#可以...

    asp.net生成Excel文件

    下面我们将深入探讨如何在ASP.NET中实现这一功能。 首先,我们要了解的是,ASP.NET是一个用于构建Web应用程序的框架,它允许开发者使用.NET Framework的强大功能来创建动态网页。而Excel文件则通常用于存储和展示...

Global site tag (gtag.js) - Google Analytics