我试图从HttpWebResponse下载并保存文件,但我正确地保存文件(文本文件除外)有问题.
我认为这与这部分有关:
byte[] byteArray = Encoding.UTF8.GetBytes(http.Response.Content);
MemoryStream stream = new MemoryStream(byteArray);
Run Code Online (Sandbox Code Playgroud)
使用上面的代码文本文件可以正常工作,但是当我尝试将内容保存到图像文件时,它会被破坏.如何将此"字符串"数据写入图像文件(和其他二进制文件)
忘了提,这是.NET CP 3.5,我有一个围绕HttpWebResponse类的包装类来添加OAuth等.
Jon*_*eet 53
问题是你要解释的二进制数据,文本,即使它不是-只要你开始把内容作为一个字符串,而不是字节,你就麻烦了.你没有给出你的包装类的细节,但我假设你的Content
属性返回一个字符串 - 你将无法使用它.如果您的包装类不允许您从Web响应中获取原始数据,则需要对其进行修改.
如果您使用的是.NET 4,则可以使用新的CopyTo方法:
using (Stream output = File.OpenWrite("file.dat"))
using (Stream input = http.Response.GetResponseStream())
{
input.CopyTo(output);
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用.NET 4,则必须手动进行复制:
using (Stream output = File.OpenWrite("file.dat"))
using (Stream input = http.Response.GetResponseStream())
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
Run Code Online (Sandbox Code Playgroud)