2010-01-29 241 views
2

我正在嘗試傳輸pdf文件。大多數文件沒有任何問題,但有時會失敗。當它失敗時,它看起來像文件大小比原來的小。例如,我試圖打開一個47K文件,但當流式輸出到瀏覽器時,它只有44.5K。當檢查流的大小(result.FileStream)時,它應該是47K。爲什麼緩衝區大小會改變我的流輸出?

我正在使用Stream.Read將文件輸出到瀏覽器。當我遇到問題時,我使用的是10000字節的緩衝區大小。但是,當我將緩衝區大小從10000更改爲1000時,問題消失並且我能夠訪問該文件。我無法解釋爲什麼緩衝區大小的變化使得流式傳輸的行爲有所不同。

下面是我使用result.FileStrea米代碼Stream類型:

using (result.FileStream) 
{ 
    int length; 
    const int byteSize = 1000; 
    var buffer = new byte[byteSize]; 

    while ((length = result.FileStream.Read(buffer, 0, byteSize)) > 0 && Response.IsClientConnected) 
    { 
     Response.OutputStream.Write(buffer, 0, length); 
     Response.Flush(); 
    } 
} 

Response.Close(); 

請賜教,因爲我絕對不明白的東西。

回答