我有一个像这样的类的场景。
Class Document
{
public string Name {get;set;}
public byte[] Contents {get;set;}
}
现在我正在尝试实现导入导出功能,我将文档保存为二进制文件,因此文档将位于包含其他字段的json文件中,文档将采用此格式。
UEsDBBQABgAIAAAAIQCitGbRsgEAALEHAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAA==
现在,当我上传此文件时,我将此文件作为字符串获取并获得相同的数据,但当我尝试以二进制字节[]转换此文件时,文件已损坏。
我怎样才能做到这一点?
我使用这样的东西来转换
var ss = sr.ReadToEnd();
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(ss);
writer.Flush();
stream.Position = 0;
var bytes = default(byte[]);
bytes = stream.ToArray();
答案 0 :(得分:4)
这看起来像base 64.使用:
System.Convert.ToBase64String(b)
https://msdn.microsoft.com/en-us/library/dhx0d524%28v=vs.110%29.aspx
并且
System.Convert.FromBase64String(s)
https://msdn.microsoft.com/en-us/library/system.convert.frombase64string%28v=vs.110%29.aspx
答案 1 :(得分:3)
您需要从base64
对其进行解码,如下所示:
假设您已将文件作为字符串读入ss
。
var bytes = Convert.FromBase64String(ss);
答案 2 :(得分:2)
这里有几件事情。您需要知道默认StreamWriter
的编码,如果未指定,则默认为UTF-8
编码。但是,.NET字符串始终为UNICODE
或UTF-16
。
MemoryStream from string - confusion about Encoding to use
我建议您使用System.Convert.ToBase64String(someByteArray)
及其对应的System.Convert.FromBase64String(someString)
为您处理此问题。