我有一些文档(pdf和html)为字节数组。现在,我必须创建这些文档的zip存档。压缩HTML可以正常工作,但是出于某种原因,pdf文档的zip存档均无效。
我已经尝试仅保存不带zip的PDF,它们工作得很好。
这是我创建Zip的代码:
byte[] buffer;
using (var memoryStream = new MemoryStream())
{
using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create))
{
var zipEntry = zip.CreateEntry(document.FileName);
using (var binaryWriter = new BinaryWriter(zipEntry.Open()))
{
binaryWriter.Write(document.Content);
}
}
buffer = memoryStream.GetBuffer();
}
答案 0 :(得分:1)
如果要将该字节保存到文件中,或者以某种API返回它们,则可以将流用作该操作的源。
如果要保存到磁盘上的文件,请使用Stream.CopyTo
传递新的FileStream
。如果要在WebAPI中返回字节字节,请创建一个StreamContent
并将其返回。
GetBuffer
将返回流底层缓冲区,该缓冲区最终将包含未使用的字节。 ToArray
将创建其他不必要的byte[]
。
答案 1 :(得分:0)
orhtej2指出GetBuffer()
方法可能返回其他字节。要获取实际的缓冲区,您必须使用ToArray()
。