我使用下面的代码从网址下载Pdf,我想知道什么是最佳做法,我只关心性能和文件大小,谢谢。
using( WebClient wc = new WebClient() )
{
byte[] data = wc.DownloadData("http://localhost:81/File/sample.pdf");
Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader( "Content-Disposition" , "attachment;filename=data.pdf" );
Response.BufferOutput = true;
Response.AddHeader("Content-Length", data.Length.ToString());
Response.BinaryWrite(data);
Response.End();
}
答案 0 :(得分:3)
如果您担心性能/效率/安全性,我建议您使用框架HttpClient
使用它,您可以执行以下操作:
using(var client = new HttpClient())
{
var stream = await client.GetStreamAsync(url);
// OR to get the content of the file as you do now
var data = await client.GetByteArrayAsync(url);
// do whatever you need to do with your file here
}
答案 1 :(得分:2)
如果您关注"效果和文件大小" (我假设你的意思是电子邮件的时间),你对* .pdf文件的请求应该包含一个accept-encoding
标题,如下所示:
Accept-Encoding: gzip,deflate
告诉服务器您希望压缩pdf文件。然后,在你的回复中,你应该
确保根据您的请求者accept-encoding
标题适当压缩回复正文,并
在您的回复中添加正确的content-encoding
标头。像
Content-Encoding: gzip
如果您需要压缩和解压缩工具,DotNetZip非常棒。价格合适。