2017-11-25 104 views
0

請有人告訴我如何顯示從服務器發送字節到瀏覽器的總文件大小和下載時間。 我試圖通過字節到client.Here發送大量字節(1 GB)字節是我試圖代碼:下載文件不顯示總文件大小和時間(C#)

long dataToRead; 
int length; 
byte[] buffer = new Byte[100000]; 
FileStream iStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); 

dataToRead = iStream.Length; 
Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file); 
while (dataToRead > 0) 
{ 
    // Verify that the client is connected. 
    if (Response.IsClientConnected) 
    { 
     // Read the data in buffer. 
     length = iStream.Read(buffer, 0, 10000); 

     // Write the data to the current output stream. 
     await Response.OutputStream.WriteAsync(buffer, 0, length); 

     // Flush the data to the HTML output. 
     Response.Flush(); 

     buffer = new Byte[100000]; 
     dataToRead = dataToRead - length; 
    } 
    else 
    { 
     dataToRead = -1; 
    } 
} 
+1

請注意,在您的代碼示例中,即使在服務器端,您也不知道文件有多大。您希望如何告知客戶並根據總規模報告進度? –

+0

什麼是手動編碼的浪費。你爲什麼不使用'返回FileStream(iStream)'? –

+0

謝謝@凱爾伯恩斯您的回覆,我只是想要的代碼,請你幫我寫這樣的代碼 –

回答

0

你可以嘗試添加一個Content-Length頭讓瀏覽器知道大小是什麼:

Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Length", dataToRead.ToString()); 
// Remainder of your code 
+0

感謝@Nikola的代碼 –

相關問題