4

実際には PDF ファイルの文字列表現である Base64 文字列を受け取りました。この文字列を Response.Write で書きたいのですが、バイナリ表現に戻すことはしません。

私はこれを試しました:

var base64string = "...";
Response.Write(base64String);
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Transfer-Encoding", "base64");

ブラウザーはコンテンツを base64 でエンコードされた PDF ファイルとして認識しません。どうすればこれを修正できますか?

編集:これは応答です

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/pdf; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
Content-Transfer-Encoding: base64
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 11 Apr 2012 11:00:04 GMT
Content-Length: 107304

JVBERi0xLjQKJeLjz9MKMSA... more content here
4

3 に答える 3

5

Content-Transfer-Encoding有効なHTTPヘッダーではありません。これはMIMEの古いヘッダーです。Transfer-Encodingこれは、次の値をサポートするHTTPに相当します。

  • チャンク
  • 身元
  • gzip
  • 圧縮
  • 収縮する

Base64でエンコードされたPDFドキュメントがある場合、このドキュメントをデコードするHTTPの「frombase64」変換はないため、応答本文に配置する前に、サーバーでデコードする必要があります。

Base64から変換するストリームが必要な場合は、を使用FromBase64TransformしてCryptoStream:に変換できます。

new CryptoStream(fileStream, new FromBase64Transform(), CryptoStreamMode.Read)
于 2012-04-11T11:54:22.077 に答える
3

でPDFを約束すると

 Response.ContentType = "application/pdf";

また、レスポンス ストリームを開いて配信し、そこに PDFのバイナリバージョンを書き込む必要があります。

于 2012-04-11T11:05:46.000 に答える
0

これを試すことができますか

var base64string = "...";
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Transfer-Encoding", "base64");
Response.Write(base64String);
Response.End();

これはあなたを助けるかもしれません

于 2012-04-11T11:28:23.087 に答える