使用c#替换内存压缩中的条目
本文关键字:压缩 替换 内存 使用 | 更新日期: 2023-09-27 18:05:30
我需要更改openxml word文档中的图像。要做到这一点,我想我可以简单地使用ZipArchive打开。docx文件,用新图像替换当前图像word/media/image1.jpg,并重新压缩它。需要注意的是,如果可能的话,我希望在内存中完成所有这些操作。
我正在使用来自System.IO的ZipArchive。压缩,可以打开docx并找到图像没有问题。当我尝试替换文件并在内存中重新生成zip时,问题就出现了。
这将在web服务器上运行,可能有最多10-20个文件同时发生,我将把所有的东西都作为byte[],这就是我想把它全部保存在内存中的原因。我也很想知道人们是否认为我应该直接把它写到磁盘上。
Update:实际的docx将从用户上传,我正在替换的图像将被存储为数据库中的二进制字段。
我建议您考虑使用DotNetZip。它比框架的内置功能健壮得多。它还有一个非常容易掌握的API。
我看不出你需要写入磁盘的理由。您应该能够从磁盘打开文件,进行修改,然后将其作为响应的一部分发送下去。
虽然使用byte[]
很好,因为这就是数据,但您可能想要使用一个流类,MemoryStream
是一个很好的API,用于处理内存中的二进制数据。