解析:如何在 ASP.NET 中下载文件
来源:博客园 作者:dotnetWalker
这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始。当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令:
这是笔者常被问到的一个问题,如何通过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当中的文件下载问题。
转载于:https://www.cnblogs.com/twttafku/archive/2008/06/03/1212617.html
解析:如何在 ASP.NET 中下载文件相关推荐
- 如何在 ASP.NET 中下载文件
这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: 殇﹖ ☆粉汐げ ...
- ASP.NET中下载文件的几种方法
2008年5月27日17:44:07 //TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) ...
- 如何在ASP.NET中生成HTML5离线Web应用
传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能.离线功能使得Web应用程序类似于本机应用程序,当断开网络连接 ...
- asp.net应用程序_如何在ASP.NET中为聊天应用程序构建键入指示器
asp.net应用程序 by Neo Ighodaro 由新Ighodaro 如何在ASP.NET中为聊天应用程序构建键入指示器 (How to build a typing indicator fo ...
- .net中下载文件的方法(转)
.net中下载文件的方法 一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) ...
- java 从网络Url中下载文件
转自:http://blog.csdn.net/xb12369/article/details/40543649 /*** 从网络Url中下载文件* @param urlStr* @param fil ...
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- java调用下载窗口_java 从网络Url中下载文件 java调用url接口
/** * 从网络Url中下载文件 * @param urlStr * @param fileName * @param savePath * @throws IOException */ publi ...
- 如何在Git分支中搜索文件或目录?
本文翻译自:How can I search Git branches for a file or directory? In Git, how could I search for a file o ...
最新文章
- 计算图像的标准差与方差(meanStdDev() 函数)
- 宏基因组序列物种分类之kraken 1/2和Bracken的使用
- Maven下载、安装和配置(转)
- [Gamma阶段]第十次Scrum Meeting
- Redis学习资料整理
- php负载均衡面板,nginx负载均衡的五种策略
- java web开发常用标签
- 1070 结绳 (25 分
- 新盲盒星球抽奖商城手机网站源码 随机开箱抢购
- mysql image类型_MyCat教程【mysql主从复制实现】
- 微软在华推广Win7拒绝“黑屏”
- 如何自己实现一个缓存服务
- 黑苹果efi制作_黑苹果微星B450AMD完美方案分享包括EFI制作工具及教程
- Latex绘制三线表
- tps协议和onvif协议_摄像头ONVIF协议,到底啥是ONVIF,又是啥意思?
- Tomcat安装配置及IDEA配置方法【亲测有效】
- 利用WireShark分析H264码流
- linux yum安装scp,CentOS安装scp命令的软件包openssh-clients
- 《Network Science》:一本关于网络科学的书
- 爬取图片-工作常用小工具01
热门文章
- github fork别人项目后如何同步更新原项目
- 计算机2010ppt试题,计算机Office2010 PPT试题.doc
- c语言常用转向的语句,java中类似于C语言的goto无条件转向语句的语法是什么?...
- java翻译数字串并打印_如何使用Java翻译字符串?
- 下拉框怎么获取label_拼多多-「关键词自然流量快速获取」访客暴涨秘诀
- 网络掩码和子网掩码区别?
- Codeforces Round #456 (Div. 2): E. Prime Gift(折半枚举)
- bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐(DP)
- C++ STL getline函数
- c#开发大全、系列文章、精品教程