如何从 HttpResponse 编码二进制 PDF?
how to encode a binary PDF from HttpResponse?
我正在从 HttpResponse 获取二进制 PDF,但无法以正确的格式获取它
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
if (!string.IsNullOrEmpty(result))
{
byte[] byteArray = Encoding.UTF8.GetBytes(result);
File.WriteAllBytes(Environment.CurrentDirectory + @"\label.pdf", byteArray);
}
}
不要使用 StreamReader
。 StreamReader
用于将字节流转换为字符流。但是,PDF 是二进制文件,您不应该将它们转换为文本。
只需将您正在下载的字节直接复制到文件中,而不将它们转换为字符:
using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
using (var responseStream = httpResponse.GetResponseStream())
using (var fileStream = File.Create(Path.Combine(Environment.CurrentDirectory, "label.pdf")))
{
responseStream.CopyTo(fileStream);
}
PDF 是字节,而不是文本 - 看起来您是从 http 请求中获取 PDF,在这种情况下您不想使用 StreamReader
、string
或 Encoding
这里 - 你只需要原始字节。您可能只使用 httpResponse.GetResponseStream().CopyTo(someOtherStream)
,其中 someOtherStream
是指向该位置的 FileStream
,即
using (var target = File.Create(path))
using (var source = httpResponse.GetResponseStream())
{
source.CopyTo(target);
}
我正在从 HttpResponse 获取二进制 PDF,但无法以正确的格式获取它
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
if (!string.IsNullOrEmpty(result))
{
byte[] byteArray = Encoding.UTF8.GetBytes(result);
File.WriteAllBytes(Environment.CurrentDirectory + @"\label.pdf", byteArray);
}
}
不要使用 StreamReader
。 StreamReader
用于将字节流转换为字符流。但是,PDF 是二进制文件,您不应该将它们转换为文本。
只需将您正在下载的字节直接复制到文件中,而不将它们转换为字符:
using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
using (var responseStream = httpResponse.GetResponseStream())
using (var fileStream = File.Create(Path.Combine(Environment.CurrentDirectory, "label.pdf")))
{
responseStream.CopyTo(fileStream);
}
PDF 是字节,而不是文本 - 看起来您是从 http 请求中获取 PDF,在这种情况下您不想使用 StreamReader
、string
或 Encoding
这里 - 你只需要原始字节。您可能只使用 httpResponse.GetResponseStream().CopyTo(someOtherStream)
,其中 someOtherStream
是指向该位置的 FileStream
,即
using (var target = File.Create(path))
using (var source = httpResponse.GetResponseStream())
{
source.CopyTo(target);
}