今天在做文件下載功能用到的是response的方法,首先我們要了解這些方法的作用。
1.response.write():將信息寫入http響應輸出流。
2.response.Flush:向客戶端發送當前所有緩沖的輸出
3.response.end:將當前所有緩沖的輸出發送到客戶端,停止該頁的執行,並引發EndRequest事件。
4.response.Close:關閉到客戶端的套接字連接。
看到這里,我們應該可以想到response實現下載的基本思想:
1.將我們要下載的文件信息寫入Http的響應輸出流(response.write)
下面我們就可以向客戶端輸出了,但是要注意在此會有2種方法:1.response.Flush 2.response.end
1.我們使用response.Flush()方法時,就要多一步動作就是關閉/停止輸出,為什么要做關閉/停止輸出?因為不做這一步就會把整個頁面的信息全部輸出了,這個不是我們所需要的,所以可以使用【response.End網上都建議用它】或【reponse.Close這個方法的用法我在網上搜了好久都說盡量不用它】
2.使用response.End方法時,我們可以不使用response.Flush的方法了。
注意:上面所說的是我本地調試通過的兩種方法
1.使用Flush和Close可以通過並且沒有報錯的
2.使用End方法也是可以的
3.使用Flush和End我感覺多余但是也是可行的
此文是自己總結,如有錯誤還望高手指出,大家共同學習
string l_strFileName = "FileName"; byte[] l_bytFileData = 把文件轉換成Byte類型; HttpContext.Current.Response.Clear(); l_strFileName = System.Web.HttpUtility.UrlEncode(l_strFileName); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + l_strFileName); if (l_bytFileData.Length == 0) { l_bytFileData = System.Text.Encoding.Unicode.GetBytes(" "); } HttpContext.Current.Response.BinaryWrite(l_bytFileData); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End();