response.Close、response.End、response.Flush區別


今天在做文件下載功能用到的是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();

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM