2013-08-22 68 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();