0

PDF を返す .aspx ページがあります。以下は Page_PreRender のコードです。

Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender

    Dim pdfStream As MemoryStream
    pdfStream = CType(Cache("PdfViewerContent"), MemoryStream)

    Response.BufferOutput = True
    Response.ClearContent()
    Response.ClearHeaders()
    Response.AddHeader("Cache-control", "no-store")
    Response.ContentType = "application/pdf"
    Response.AddHeader("Content-Length", pdfStream.Length.ToString())
    Response.AddHeader("Content-Disposition", "attachment=PDFFile.pdf")
    Response.BinaryWrite(pdfStream.ToArray())
    Response.Flush()
    HttpContext.Current.ApplicationInstance.CompleteRequest()

End Sub

このページは、window.open JavaScript 呼び出しから起動されます。

これは、IE9、Chrome、および Firefox を搭載した Windows 7 で正常に動作します。ただし、IE7 を実行している Windows XP では、ブラウザーがちらつくだけで、ウィンドウは開かれません。(ポップアップ ブロッカーは無効になっています) Chrome では、開発者コンソールに「リソースはドキュメントとして解釈されましたが、MIME タイプ application/pdf で転送されました」というエラーが表示され、ページがファイルとしてダウンロードされます。

4

1 に答える 1

1

そうあるべきだと思います

 Response.AddHeader("Content-Disposition", "attachment; filename=PDFFile.pdf")

また、私はResponse.End()直後に電話しますResponse.Flush()

于 2012-07-13T19:22:22.887 に答える