如何在ASP.NET中下载文件

TGK-planner编译报错PLUGINLIB_EXPORT_CLASS解决 TGK-planner编译报错解决。 阅读详情



  这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始。当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令:

  Response.Redirect("test.doc")

  您可以把上面这行指令放在Button的Click事件当中,当用户点击按钮之后,网页就会被转址到该word档,造成下载的效果。

  但是这样的下载有几个问题:

   1. 无法下载不存在的文件:例如,我们若是想把程序动态(临时)产生的文字,当作一个文件下载的时候(也就是该文件其实原先并不是真的存在,而是动态产生的),就无法下载。
   2. 无法下载存储于数据库中的文件:这是类似的问题,该文件并没有真的存在,只是被存放在数据库中的某个位置(某笔记录中的某个栏位)的时候,就无法下载。
   3. 无法下载不存在于Web文件夹中的文件:文件确实存在,但该文件夹并不是可以分享出来的Web文件夹,例如,该文件的位置在C:/winnt,您总不会想要把该文件夹当作Web文件夹吧?这时候,由于您无法使用Redirect指向该位置,所以无法下载。
   4. 下载文件后,原本的页面将会消失。

  典型的状况是,我们要让用户下载一个.txt文件,或是.csv格式的Excel文件,但是...

   1. 这个文件可能是通过ASP.NET程序动态产生的,而不是确实存在于Server端的文件;
   2. 或是它虽然存在于伺服器端的某个实体位置,但我们并不想暴露这个位置(如果这个位置公开,很可能没有权限的用户也可以在网址栏上输入URL直接取得!!!)
   3. 或是这个位置并不在网站虚拟路径所在的文件夹中。(例如C:/Windows/System32...)

  这时候,我们就得采用不同的方式:

Shared Function DownloadFile(ByVal WebForm As System.Web.UI.Page, ByVal FileNameWhenUserDownload As String, ByVal FileBody As String)
  
WebForm.Response.ClearHeaders()
  WebForm.Response.Clear()
  WebForm.Response.Expires = 0
  WebForm.Response.Buffer = True
  WebForm.Response.AddHeader("Accept-Language", "zh-tw")
  '文件名称
  WebForm.Response.AddHeader("content-disposition", "attachment; filename=" & Chr(34) & System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8) & Chr(34))
  WebForm.Response.ContentType = "Application/octet-stream"
  
'文件内容
  WebForm.Response.Write(FileBody)
  
WebForm.Response.End()
End Function

  上面这段代码是下载一个动态产生的文本文件,若这个文件已经存在于服务器端的实体路径,则可以通过下面的函数:

Shared Sub DownloadFile(ByVal WebForm As System.Web.UI.Page, ByVal FileNameWhenUserDownload As String, ByVal FilePath As String)
  
WebForm.Response.ClearHeaders()
  WebForm.Response.Clear()
  WebForm.Response.Expires = 0
  WebForm.Response.Buffer = True
  WebForm.Response.AddHeader("Accept-Language", "zh-tw")
  
'文件名称
  WebForm.Response.AddHeader("content-disposition", "attachment; filename=" & Chr(34) & System.Web.HttpUtility.UrlEncode(FileNameWhenUserDownload, System.Text.Encoding.UTF8) & Chr(34))
  WebForm.Response.ContentType = "Application/octet-stream"
  '文件内容
  WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath))
  WebForm.Response.End()
End Sub

上面这两个下载文件的的函数,应可解决大多数开发人员在ASP.NET当中的文件下载问题。 

Hermes Agent vs OpenClaw:2026 年开源 AI Agent 框架深度对比 两款 2026 年最受关注的开源 AI Agent 框架,一个主打「自进化」,一个聚焦「网关路由」——它们究竟有何不同?本文将从架构原理、核心机制、使用方式到适用场景,为你全面拆解。无论你是 AI 研究者、开发者,还是想用 AI 提升工作效率的个人用户,这篇文章都将帮助你做出最适合的选择 阅读详情

相关推荐

信贷审批中的那些坑:从零开始搭建风控策略体系的5个关键步骤

本文深入探讨了信贷审批中的风控策略体系搭建,从数据陷阱识别、规则冲突诊断到反欺诈攻防,提供了5个关键步骤的实战指南。重点解析了如何通过特征工程、决策树优化和模型可解释性技术,构建动态平衡的风控体系,有效降低逾期风险并提升审批效率。

weixin_29253711的博客 412

NET四种文件下载方式

 protected void Button1_Click(object sender, EventArgs e)    {        //TransmitFile实现下载        /*         微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite         下载超过400mb的文件时导致Aspnet_w

信守承诺,雕刻寂寞 843

飞书日历同步Outlook翻车?我踩过的坑和最终用Google Calendar成功的完整配置记录

本文详细记录了从Outlook日历同步到飞书时遇到的常见问题及解决方案,特别是通过Google Calendar实现稳定同步的完整配置流程。文章揭示了Outlook同步方案易翻车的原因,并提供了Google Calendar的避坑指南、高级技巧和企业级部署建议,帮助用户高效实现日历同步。

weixin_33724046的博客 313

ASP.NET中常用的文件上传下载方法

参考文章:http://blog.ncmem.com/wordpress/2023/09/13/asp-net%e4%b8%ad%e5%b8%b8%e7%94%a8%e7%9a%84%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%e6%96%b9%e6%b3%95/今天简单的介绍了几种文件上传与下载的方法,都是在实际的项目开发中经常需要用到的,可能还有不完善的地方,希望大家可以互相交流一下项目开发中的经验。

weixin_52041354的博客 1393

STM32F407标准库下ADC多通道DMA采集的配置与优化

本文详细介绍了STM32F407标准库下ADC多通道DMA采集的配置与优化方法。通过GPIO模拟输入配置、ADC时钟和模式设置、DMA传输参数配置等关键步骤,实现高效的多通道数据采集。文章还提供了性能优化技巧和常见问题排查指南,帮助开发者提升采样速率和稳定性。

weixin_29192141的博客 434

数字电路实验避坑指南:如何正确搭建主从JK触发器测试电路(附Proteus仿真)

本文详细解析了主从JK触发器的工作原理及实验搭建指南,重点解决了常见的Catching Problem现象,并提供了Proteus仿真优化方案。通过元器件选型、电路连接步骤和常见错误排查,帮助读者正确搭建测试电路,确保数字电路实验的稳定性和可靠性。

weixin_30790841的博客 469

PHP文件断点上传

有些年龄也比较大,有时候可能误操作,刷新网页,结果导致上传了一半的数据丢失了,客户就不爽了,就提意见了,说功能做的不行,不好用,批量下载,文件夹下载,文件夹下载要支持文件夹的层级结构,也就是用户上传的文件夹是什么层级结构,下载下来也必须是这个层级结构,项目一期我们是采用的打包的方式,直接在服务器上面把文件夹打成一个压缩文件RAR,这样下载下来后解压,文件夹层级结构是一致的。离项目需求相差太远。免费提供源码讲解服务,原理讲解,核心代码功能实现讲解,新业务功能扩展指导,免费提供编译指导,免费提供部署指导。

alisky119的博客 1132

告别概念晕眩:用TC3xx SMU和TLF35584的配置实例,搞懂ASIL D功能安全落地

本文通过英飞凌TC3xx系列MCU的SMU模块与TLF35584电源管理芯片的协同配置实例,详细解析了如何实现符合ASIL D功能安全标准的刹车辅助ECU。文章涵盖SMU报警源配置、响应动作类型、TLF35584的安全状态管理,以及构建完整安全闭环的实践方法,帮助工程师将抽象的安全概念落地为具体设计方案。

weixin_30647065的博客 436

ASP.NET Core应用程序在IIS服务器上的运行环境介绍和下载安装(超详细)

ASP.NET Core应用程序在IIS服务器上的运行环境介绍和下载安装(超详细)

Leewayah的博客 1万+

Vivado里LDPC IP核怎么配?手把手教你从6144bit数据到完整参数设置

本文详细介绍了在Vivado中配置LDPC IP核的完整流程,从6144bit数据的参数计算到实际IP核设置。通过分析基本图选择、扩展因子计算和移位参数确定等关键步骤,帮助工程师高效完成LDPC编译码的硬件实现,并提供了时序控制、仿真验证和性能优化的实用技巧。

weixin_30352645的博客 518

手把手教你学simulink(16.10)-- 基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目

基于Simulink的IIR滤波器(Infinite Impulse Response Filter)项目的详细实例介绍。这个项目将重点放在IIR滤波器的设计、实现和仿真上,帮助你理解和应用IIR滤波器在信号处理中的作用。

MHD0815的博客 706

ASP.NET实现文件上传和下载

/ 提示上传成功Response.Write("参考文章:http://blog.ncmem.com/wordpress/2023/09/10/asp-net%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd/[在这里插入图片描述](https://img-blog.csdnimg.cn/a32cb74414f74fdbb4bfd28e1ee70d63.png#pic_center)

weixin_45525177的博客 412

使用cmd命令查看电脑是不是翻新机 如何查看自己电脑是不是翻新机

最近pdd啥的百亿补贴啊,什么品牌店啊,很多“假一赔十”,绝对“正品”都蹦出来了,很多人拿到以后,也上网查了各种鉴别方式,包括区分是不是翻新机之类的。本人亲自踩坑“pdd品牌店”,“假一赔十”,“绝对正品”等店铺,跟大家分享一下我得鉴别经验(说道分享鉴别经验了,大家也就不用好奇了,我肯定是买到翻新机了,mmp)。 第一步:准备好手机,开始录屏,没有完整的拆箱视频,可能不容易退货退款 第二步:拆箱,查看屏幕划痕(用手机闪光灯看,要不然看不清),然后查看屏幕有没有被擦过的痕迹 第三步:查看USB孔等插口有没有划

weixin_39417324的博客 1万+

ASP.NET下载文件代码

 如何通过ASP.NET来下载文件,这个问题我们经常遇到,把常用的方法总结到一起,学习学习。当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令:Response.Redirect("test.doc") 您可以把上面这行指令放在Button的Click事件当中,当用户点击按钮之后,网页就会被转址到该word档,造成下载的效果。但是这样的下载有几个问题:

寒冬玉 1838

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ASP.NET 实现文件下载

在日常项目中,我们经常用到文件的上传下载功能,今天分享一个在ASP.NET中下载文件的例子,通过实现IHttpHandler 来实现下载。 直接上代码: DownloadHandler.cs View Code public class DownloadHandler:IHttpHandler { public bool IsReus...

weixin_30615767的博客 506

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Asp.net文件下载的实现

一种简单的方法, 将服务器端文件的服务器路径直接写到一个LinkButton或者HyperLink的Url中, 让浏览器完成下载. 但这么做不够灵活, 只能在page_load的时候写死每个链接, 且直接使用明文公开文件路径, 大大降低了安全性. 这里我们使用一种基于Response对象的文件传输方法, 改方法同样是基于http协议的. 我们可以在一个按钮的相应函数中写入如下代码: ...

weixin_30699443的博客 1627

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ASP.NET实现文件下载的功能

文件下载是很多网站中含有的常用功能,在ASP.NET中可以使用FileStream类、HttpRequest对象、HttpResponse对象相互结合,实现输出硬盘文件的功能。该方法支持大文件、续传、速度限制、资源占用小。 FileStream类:MSDN上的解释为,FileStrem类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标...

weixin_34380781的博客 928

ASP.NET 文件打包下载

ASP.NET 文件打包下载        protected void Button1_Click(object sender, EventArgs e)         {            //下载文件             string path = Server.MapPath("xlt/");             string copyPath = Server.

T_T_X_S的专栏 1098

Asp.net mvc 下载文件

前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件。 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 ASP.NET MVC 下载 在mvc中,control的returnresult有FileResult,描述如下: System.Web.Mvc.FileResult System.Web...

Cool2Feel的博客 622

Asp.Net文件的上传和下载

为什么80%的码农都做不了架构师?>>> ...

weixin_34121282的博客 1002

Asp.Net Mvc下载文件

在asp.netmvc框架下下载文件,是比较容易的:

lzj771207的专栏 961

asp.net文件下载

.aspx代码如下: 普通的超链接 有时无法满足下载的需求,而是用浏览器直接打开了文件 普通超链接链接一个图片文件[直接打开]: 普通超链接链接一个rar文件[下载]: 普通超链接指向一个wav文

张亚运的专栏 1467
上一篇: 教学影片:如何建立Silveright图示菜单(Silverlight的鼠标事件功能介绍)
下一篇: 如何在ASP.NET中上传文件到数据库
dotnetWalker
博客等级 码龄19年 289粉丝 69原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值