我的任务是将从文件系统检索到的Zipped PDF嵌入到C#中的XML文档中。规范规定:
例如,检索文件"INV001.pdf">
压缩它以获得一个"INV001.zip"文件。
2/将每个.zip编码为Base64格式
目标是将zip文件(一个二进制对象(转换为文本文件。
文本文件的内容将是一个文本字符串,我们将能够复制/粘贴到.xml文件中
这就是我使用代码的地方
string docText = null;
using (FileStream originalFileStream = File.Open(myFilePath, FileMode.Open))
{
using (FileStream compressedFileStream = File.Create("compressed.gz"))
{
using (var compressor = new GZipStream(compressedFileStream, CompressionMode.Compress, true))
{
originalFileStream.CopyTo(compressor);
using (StreamReader sr = new StreamReader(compressor))
{
docText = sr.ReadToEnd();
}
}
}
}
代码在线上引发异常
using (StreamReader sr = new StreamReader(compressor))
"流不可读";。我在这里走对了吗?不需要存储ZIP,只需要将其作为Base64文本粘贴到XML文件中即可。我在SO上发现了一些文章,暗示了一些方法,但似乎都不起作用!非常感谢
这似乎有效:
string docText = null;
byte[] data;
using (FileStream originalFileStream = File.Open(myFilePath, FileMode.Open))
{
using (FileStream compressedFileStream = File.Create("compressed.gz"))
{
using (var compressor = new GZipStream(compressedFileStream, CompressionMode.Compress, true))
{
originalFileStream.CopyTo(compressor);
using (MemoryStream ms = new MemoryStream())
{
compressor.BaseStream.Seek(0, SeekOrigin.Begin);
compressor.BaseStream.Position = 0;
compressor.BaseStream.CopyTo(ms);
data = ms.ToArray();
docText = Convert.ToBase64String(data);
}
}
}
}