如何在 ASP.NET 中下载文件
这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始。当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令:
殇﹖ ☆粉汐げ沫沫 №柳絮飘零℡ 忘记 - 國際后爹。 ┌┌賣身 杨易易 丶ㄗìng*` 聖ジゞ心 |▍`縵嗨 ^蓝^幻 ♂演卜莞啲戏 &流浪鱼^ 自由人 Kugoo ●Lzisgod● ″_.淡莣°﹖ ωǒ﹎緈輻? ┆鮳丄嘍┆~~ TAK-AKINA "`.惔莣.à﹖ ..壊尐孓 ゝ尛樂冃學 Lovin U 不想恋爱 ↘*潶Sè 襘 Sminis┆煌 ギ℡娚魜菋メ YGL^o^義 千里快哉风 H^ō^H 开心果 新新 smile~ {→.°難舍` 云翔 -〣ˇ莣誋◆ ╘*.兲使 __. 亡命天涯 ぁ嗳マ♀ヶ乔 ぐo騩贰爺︶ 木時 123?? SOSO用户 天使/ty草鱼 _﹥雙.漁蓙_ 爱袮爬上牆 ゛綪譅﹖ 木時 outsider ℅﹏彎○° ⒓冄23號 ℡誮惢ヾ 〆coooal﹏ ωǒ鈈袙※瀭 ︶ㄣ繌尐孓 老野 _ 蒤鵶.· 冥王の殇烙印 oО啡露⒏娶_ 『ˉ蕗ˉ』 の月ぜ光の SOSO用户 "Xīao┘肖 →習慣有袮ぺ 南無阿彌陀佛 瘋狂的喵喵 佳佳 愛捉弄人D.豬 打死也不能说 [潮濕]。 /ty╲_/~↘ 上帝メ禁區 溈鉨wo乄菰単 摇滚¢堕落 K★T★V★ ←¢幻風☆ ↘静静的。。 ︶ㄣ愛誰誰ㄣ ℉ǒr下午``` ↙℡︱聯盟灬 尐孓/勾贼嘢 我叫什么? ゝ天囿┌藍 『火¤影』暗 喤締√ 高天流云 ぜだ♂ 黑崎一户 ゛-.閉 - 〆宝宝鱼ぐ 尘封记忆 卿松敷任 κ﹏錯〆覺 午后柠檬茶 精灵 日&月 一米阳光 有话直说 麥咯ダ麥﹫ -あXeyuuあ 血龙⑻寒风 随时 々諥キ嚸★← 偉偉/aiq最乖 ︵ShoW躌の帅 o.謊言..╱ 涙_Sky.孤独 影 季 鲈莼思归 あ冰山来客あ 流浪的疾风 ゛從紟暀後ˊ §如梦人生★ (_蒍祢变乖 这一季 八千女鬼 Dongr 阿君/xixin 皒,厛兲甴掵 LOVEの永远 /mg微笑 ジ緣起吥滅ジ 一切皆有可能 商████ 俊 獨行★天下 ご&ァ^╅緣╰ 夏水朦胧 飞雪飘扬 單純哋壞︶ㄣ (_頖縌ゞ尐姊 ㊣西湖づ壟王 愛の無限 '苊祉為尓哭. 喜欢你 ぃ閉幕式íΟ 你的左伴边 妖精鱼儿 ご孤單菋噵ご 喜喜 ﹎亂倫 ɑべ -到此爲止, せね亢吻掂ひ |ミ桖ㄨ際╮ WYAN 懶す喫草つて ▉▉冷血▉▉ 今世無緣 愛伱不是遊戲 ^球園書方か. ылε彬 ぃ旮旮跩う 魔鬼 ヤ吓ωǒ①跳 蓝鱼 蒓べ愛℡﹎嚖 笨毛毛 ●▕謀娚孓" /;f素颜如故 ♀少爺★偉¤ ‘虛僞 ポ岥つ尒さ陔 丅芈zai薆亇 ぐ灬葬︶ㄣ淚 ‘ 牜.Ы !` ら蝳薬ん ℡戀丄妳 玉九易 【禁止騷擾】 ゞ 淚 .﹖ 綠夢飛影 雪玲珑 善良Vs邪神 ♂葬≡ω≡祤 SOSO用户 灬莣ろ伱﹖ `〇畏.尛媫 ●.┍晨曦┚ o.﹎尜篈 Kld.Andy 绝不/aiq后悔 傷心≌無奈 永遠ご㊣戀ぷ _▂.絕い朢 缺失的天空 ╳灬笨笨滴ぴ 落叶随风 Z.Z=稀 ┢┦apΡy♂ な星ジ空乄下 最最幸运的人 恶魔/dx 破煖壷 いせ零 ╰⒎厷宔﹖ヤ o.繡譅′」藸 ★.寵愛n1. 愛妳/aiq無悔 川子 じ沉没过后こ ドるビ ↘夨憶m儍お 海洋~ 伤…… 缘来是你 ベwǒ吥後悔 ●(╱引﹎X" 看见老鼠洞 燕子 ·o.苛嗳寶貝 百乐 戀メ僤蒓蘭爱 情是那麼笨 あ浅浅の嘚僾 .ī藍铯哒楓 Se7eη柒.誡 等待 ﹎′.錯覺、 魏向军 → 递归 /:+ COOL狗 ~餉祐赱﹏ 尐嘴亂儭亨 ωǒ/xin伤 聆@听☆世@界 ヅ天使ぺ嫙嵂 〢蘅◆嗳╲↘ -[艹莓頭]’ 兆/fw祺 ·ㄚòひ ? ⒓愛⒉⒍妳 庝♀妍ル SOSO用户 天苍い零儿 寻仙问道 :Iov3寶呗 冰厸¢翔宇 ▌再黬壹橫▌ ゛尛藾の潴ゞ Rеvоlνeг мe˙寳児 X'卜覀亼 ″_.牯惑钕. 冰宫魔女 “喆”以死 优の优love♀ ご孤單菋噵ご 啵罩‵ linda ╰☆冰@だ/cy 笑看人生 SOSO用户 七夜 蓝色古月 末路狂花 21dē愛↗♀ 海方舟/aiq 囧灬墜落天使 |宝贝薇儿 专打龟系列 菏MIN -↘"肚兜 | ′..晕s_ 11 ▄_鬭* _ωǒ﹎鍆~ ˇ葬№嗳√ ╪尐嘴亂親. 亂了放棄感覺 - [藍]1/蒅 Xiǎo/mg輝 ゥ&竹 ゞ戀伱①輩孓 ♂笑骂自由人 `.`.暫無.... shuffle 程思成就未来 阳光的味道 後續★鉉ù 賣血丄網 .◆|.壞秂丿 无缘/tx爱你 xinxing鮭鮭 №恋※舞人间 Mua.〢兲缔℡ 一生兄弟 ⒈笙の僾伱 ssss 冰焰温情 .羙侽籽./db 涟漪 Fly_100% №龍§尐☆ 晨风晓月 gfhjj 芸海桂/tp ★零八★ 深海之潮 飘 ☆☆☆☆☆ 石头 安静的C调 三百六十柒天 寶貝≒淚 糸色 望 ぃ吖ゞ頭 ●'|Xx蔸糨. 双子座飞鸟 SOSO用户 .|°妷.杺! 冷如风 木柔/love 木時 穿睡衣的果冻 语过添情 SOSO用户 ⊙_⊙乖の乖~ -[G/t 镜源世尘 华尔街 echo Dg 傑ル 123
以下是引用片段: 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 中下载文件相关推荐
- 解析:如何在 ASP.NET 中下载文件
解析:如何在 ASP.NET 中下载文件 来源:博客园 作者:dotnetWalker 这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户 ...
- 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 ...
最新文章
- ubuntu如何修改字符集编码
- java字符串反转方法【全】
- phpmyadmin登录远程mysql数据库
- Matlab xlim ylim zlim函数
- 【数据结构基础】-串-顺序结构的基本操作实现
- How GPUs Work
- 原生input和onchange
- android studio聊天跳转_android app跳转到微信的示例
- Qt---MaintenanceTool
- Mac OS X 安装protobuf
- vagrant 网络三种模式
- 【POJ 1733】Parity game【带权并查集维护奇偶】
- JAVA 电子书下载地址
- hibernate官网下载
- 基于Java语言实现全国交通咨询模拟
- android 读取 json 字符串文件遇到的一个坑 W/art: Suspending all threads took: xx.xxx ms
- abs、fabs 用法
- 用Html+js自己写了一个小游戏
- AirServer最新Win64位个人版投屏软件
- layui-table表格根据条件更换表格背景颜色,高亮显示
热门文章
- Photoshop 技能167个(2)
- 西门子PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器HWT905(4)——多传感器多角度报警
- 批量邮件 邮件合并 Word
- 如何通过EDIUS特效实现卷轴的制作
- Three.js 深度测试
- Android图库(系统相册)的数据库
- Dissection C Chapter 6
- 万网php发不了邮件,万网等虚拟主机不能SMTP发信的解决方案
- 计算机集中控制系统结构上和DCS基本一致,集散控制系统与现场总线试题习题及答案全解.doc...
- 大学计算机组装虚拟实验,计算机硬件组装虚拟实验系统设计研究