我使用一个web服务,它返回一个zip文件,作为字符串,而不是我预期的字节。我试着将它写入磁盘,但当我打开它时,它告诉我它已损坏。我做错了什么?
string cCsv = oResponse.fileCSV;//this is the result from webservice
MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(cCsv));
using (FileStream file = new FileStream("test.zip", FileMode.Create, FileAccess.Write))
{
ms.WriteTo(file);
}
ms.Close();
答案 0 :(得分:0)
我不确定字符串是什么类型的编码,但假设UTF-8,以下内容应该有效。 UTF-16将是另一种猜测。
string cCsv = oResponse.fileCSV;
using (BinaryWriter bw = new BinaryWriter(File.Create("test.zip")))
{
bw.Write(System.Text.Encoding.UTF8.GetBytes(cCsv));
}
查看字符和返回的原始字符串本身可以提供信息。
修改强>
根据弗兰克的回答,正确的编码是base64,这当然是有道理的,因为它的二进制数据存储为字符串。
另外,根据Frank的回答,如果唯一的动作是直接写单个字节数组,那么File.WriteAllBytes
就会更紧凑。
答案 1 :(得分:0)
好的,我解决了这个问题:
File.WriteAllBytes("testbase64.zip", Convert.FromBase64String(cCsv));