回复于Base64编码字符串(Response.Write Base64 string)

2019-09-16 11:06发布

我收到一个Base64编码字符串,它实际上是一个PDF文件的字符串表示。 我想写这个字符串的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

Answer 1:

Content-Transfer-Encoding不是有效的HTTP标头; 这是从MIME一个旧的头。 这是HTTP相当于是Transfer-Encoding ,支持以下值:

  • 分块
  • 身分
  • gzip的
  • 压缩
  • 放气

如果你有一个Base64编码的PDF文档,没有一个“从BASE64”变换HTTP将这个文件为你解码,所以你必须在服务器上把它在响应体之前对其进行解码。

如果你想从Base64编码转换流,你可以使用一个FromBase64TransformCryptoStream

new CryptoStream(fileStream, new FromBase64Transform(), CryptoStreamMode.Read)


Answer 2:

当你答应了PDF

 Response.ContentType = "application/pdf";

你也应该通过打开响应流提供一个写PDF的二进制版本出现。



Answer 3:

你可以试试这个

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

可能这将帮助你



文章来源: Response.Write Base64 string
标签: c# asp.net http