文件不以%pdf-开头

时间:2011-08-18 02:26:38

标签: c#

我问this question,现在已经开始工作了。

然而,我仍然得到标题错误,似乎找不到任何解决它的人的任何参考。

这让我疯了!

我的ASHX C#代码看起来像这样;

context.Response.Clear();
context.Response.ClearContent();
context.Response.ClearHeaders();
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.AddHeader("Content-Disposition", "inline;filename=file.pdf"); 
context.Response.ContentType = "application/pdf";

Stream fileStream = publishBookManager.GetFile();
byte[] buffer = new byte[32 * 1024];
using (MemoryStream ms = new MemoryStream())
{
  int read;
  while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
  {
    ms.Write(buffer, 0, read);
  }
}

context.Response.BinaryWrite(buffer);
context.Response.Flush();
context.Response.Close();

我的jQuery / javascript看起来像;

window.open('/UserControls/download.ashx?format=pdf&bookId=' + bookId, "pdfViewer");

3 个答案:

答案 0 :(得分:1)

Acrobat Reader是否升级到最新版本? Acrobat Reader中的文件是否可以与HTTP请求分开?

此外,文件是否大于32K?因为看起来你只能在缓冲区中保存32K,而你正在写出调用者。

答案 1 :(得分:1)

这段代码存在一些问题 - 当可能意图写出你的内存流的内容时,你会写出buffer的内容,你可以在不使用的情况下处理这些内容 - 但是为什么不做呢

fileStream.CopyTo(context.Response.OutputStream);

答案 2 :(得分:0)

这不是解决方案,而是黑客攻击。它可能对某人有帮助......

当我的用户尝试下载使用直接链接从网站自动生成的PDF时,我收到了相同的错误消息,例如http://example.com/MyFile.pdf

要解决此问题,我将超链接从http://example.com/MyFile.pdf更改为http://example.com/MyFile.pdf

(注意链接末尾的问号)

它解决了这个问题。

我不确定它是如何工作的,可能是一个缓存问题!?