2013-08-22 95 views
0

因此,我有一個PDF文件在我的服務器上,我可以打開它,它看起來很好。通過HTTP提供文件後,PDF文件損壞

然後我嘗試提供服務的文件與此代碼

Response.ContentType = "Application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Filename.pdf"); 
Response.TransmitFile("C:\\Temp\\Filename.pdf"); 
Response.End(); 

此提供文件,這樣可以節省在客戶端上,但問題是這個新的文件是關於.05Mb比原來更大,而當你試圖打開它的PDF是腐敗的。

任何想法?

+2

可能是同一個問題? http://stackoverflow.com/questions/9231239/response-transmitfile-corrupting-file – iPouf

回答

0

你的代碼應該可以工作。請確保您使用Ajax下載文件。

您可以嘗試使用閃光燈並在結束前關閉。

Response.ContentType = "Application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Filename.pdf"); 
Response.TransmitFile("C:\\Temp\\Filename.pdf"); 
Response.Flush(); 
Response.Close(); 
Response.End(); 

如果仍不能正常工作,你可以嘗試的BinaryWrite。唯一的缺點是它不適用於大文件,因爲它在發送到客戶端之前將文件加載到內存。

Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", "attachment; filename=Filename.pdf")); 
Response.BinaryWrite(File.ReadAllBytes("C:\\Temp\\Filename.pdf")); 
Response.End();