我有一些文档(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();
}
如果要将该字节保存到文件中,或在某种 API 中返回它们,则可以使用流作为该操作的源。
如果要保存到磁盘中的文件,请使用 Stream.CopyTo
传递新FileStream
。如果要在 WebAPI 中返回字节,请创建一个StreamContent
并返回它。
GetBuffer
将返回流基础缓冲区,该缓冲区最终将包含未使用的字节。 ToArray
将创建一个额外的不必要的byte[]
。
正如orhtej2指出的那样,GetBuffer()
方法可能会返回额外的字节。要获得实际的缓冲区,您必须使用 ToArray()
.