Response.BinaryWrite在MAC中不与Safari一起使用

时间:2012-01-03 09:52:44

标签: asp.net macos safari response.write

我正在使用以下代码将PDF发送到浏览器

        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Length", fileBytes.Length.ToString());
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(fileBytes);
        Response.Flush();
        System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();

对于除MAC中的Safari(版本5.x)之外的所有浏览器,它都能很好地嵌入(pdf在浏览器中正确嵌入)。此外,它适用于MAC中的Firefox和Chrome 我想知道这是一个浏览器问题吗?或者Response.BinaryWrite有什么问题?

[编辑]
Safari行为,pdf根本没有加载。显示一个进度条并继续加载,可能与安装的PDF插件有关吗?那么,如何弄清楚Safari中这种行为的原因?

[编辑]
在Safari开发人员工具控制台“无法加载资源:插件处理负载”中记录此错误,这似乎与PDF插件有关。

1 个答案:

答案 0 :(得分:0)

试试这个,它和我合作很好

        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "application/pdf";
        Response.Buffer = true;
        Response.AppendHeader("Accept-Header", attachmentObj.AttachmentFile.Length.ToString());
        Response.AppendHeader("content-disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(attachmentObj.Description, System.Text.Encoding.UTF8) + "\"");
        Response.AppendHeader("Pragma", "public");
        Response.BinaryWrite((byte[])attachmentObj.AttachmentFile.ToArray());        
        Response.Flush();
        Response.End();