欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在ASP.NET中下載文件的實現(xiàn)代碼

 更新時間:2012年02月14日 22:28:17   作者:  
通過ASP.NET來下載文件,這個問題可大可小,我們先從小的開始。當(dāng)我們要讓用戶下載一個文件
這是筆者常被問到的一個問題,如何通過ASP.NET來下載文件,這個問題可大可小,我們先從小的開始。當(dāng)我們要讓用戶下載一個文件,最簡單的方式是通過Response.Redirect指令:

  Response.Redirect("test.doc")

  您可以把上面這行指令放在Button的Click事件當(dāng)中,當(dāng)用戶點擊按鈕之后,網(wǎng)頁就會被轉(zhuǎn)址到該word檔,造成下載的效果。

  但是這樣的下載有幾個問題:

1. 無法下載不存在的文件:例如,我們?nèi)羰窍氚殉绦騽討B(tài)(臨時)產(chǎn)生的文字,當(dāng)作一個文件下載的時候(也就是該文件其實原先并不是真的存在,而是動態(tài)產(chǎn)生的),就無法下載。
2. 無法下載存儲于數(shù)據(jù)庫中的文件:這是類似的問題,該文件并沒有真的存在,只是被存放在數(shù)據(jù)庫中的某個位置(某筆記錄中的某個欄位)的時候,就無法下載。
3. 無法下載不存在于Web文件夾中的文件:文件確實存在,但該文件夾并不是可以分享出來的Web文件夾,例如,該文件的位置在C:/winnt,您總不會想要把該文件夾當(dāng)作Web文件夾吧?這時候,由于您無法使用Redirect指向該位置,所以無法下載。
4. 下載文件后,原本的頁面將會消失。

  典型的狀況是,我們要讓用戶下載一個.txt文件,或是.csv格式的Excel文件,但是...

1. 這個文件可能是通過ASP.NET程序動態(tài)產(chǎn)生的,而不是確實存在于Server端的文件;
2. 或是它雖然存在于伺服器端的某個實體位置,但我們并不想暴露這個位置(如果這個位置公開,很可能沒有權(quán)限的用戶也可以在網(wǎng)址欄上輸入URL直接取得!!!)
3. 或是這個位置并不在網(wǎng)站虛擬路徑所在的文件夾中。(例如C:/Windows/System32...)

  這時候,我們就得采用不同的方式:
復(fù)制代碼 代碼如下:

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"
  '文件內(nèi)容
  WebForm.Response.Write(FileBody)
  WebForm.Response.End()
End Function

  上面這段代碼是下載一個動態(tài)產(chǎn)生的文本文件,若這個文件已經(jīng)存在于服務(wù)器端的實體路徑,則可以通過下面的函數(shù):
復(fù)制代碼 代碼如下:

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"
  '文件內(nèi)容
  WebForm.Response.Write(System.IO.File.ReadAllBytes(FilePath))
  WebForm.Response.End()
End Sub

上面這兩個下載文件的的函數(shù),應(yīng)可解決大多數(shù)開發(fā)人員在ASP.NET當(dāng)中的文件下載問題。

相關(guān)文章

最新評論