使用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将从用户上传,我正在替换的图像将被存储为数据库中的二进制字段。

使用c#替换内存压缩中的条目

我建议您考虑使用DotNetZip。它比框架的内置功能健壮得多。它还有一个非常容易掌握的API。

我看不出你需要写入磁盘的理由。您应该能够从磁盘打开文件,进行修改,然后将其作为响应的一部分发送下去。

虽然使用byte[]很好,因为这就是数据,但您可能想要使用一个流类,MemoryStream是一个很好的API,用于处理内存中的二进制数据。