从url最佳方法下载pdf

时间:2015-05-19 21:29:52

标签: c# asp.net .net asp.net-mvc

我使用下面的代码从网址下载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();

}

2 个答案:

答案 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非常棒。价格合适。