将文件(odt 或 docx)解压缩到内存流中

发布于 2024-12-17 10:25:47 字数 321 浏览 1 评论 0原文

我一直在使用 Asp.Net 开发一个 Web 应用程序,并且使用 SharpZipLib 来处理 odt 文件(来自 Open Office)和未来的 docx 文件(用于 ms office)。我需要打开一个 odt 文件(如 zip 文件),更改其中的 xml 文件,再次压缩并将其提供给浏览器发送给我的客户端。

我可以在文件系统中执行此操作,但它会暂时在我的磁盘中获得一个空间,而我们不需要它。我想在内存中执行此操作(使用 MemoryStream 类),但我不知道如何使用 SharpZipLib 解压缩内存流中的文件夹/文件,更改并使用它再次压缩。有关于如何执行此操作的示例吗?

谢谢

I have been developing an web application with Asp.Net and I'm using SharpZipLib to work with odt files (from Open Office) and in the future docx files (for ms office). I need to open an odt file (like a zip file) change a xml file inside it, zip again and give it to the browser send to my client.

I can do this in file system but it will get a space in my disk temporarily and we don't want it. I would like to do this in memory (with a MemoryStream class), but I don't know how to unzip folders/files in a memory stream with SharpZipLib, change and use it to zip again. Is there any sample about how to do this?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

毅然前行 2024-12-24 10:25:47

您可以使用类似

 Stream inputStream = //... File.OpenRead(...);

  //for read file
 ZipInputStream zipInputStream = new ZipInputStream(inputStream));

 //for output 
 MemoryStream memoryStream  = new MemoryStream();



using ( ZipOutputStream zipStream = new ZipOutputStream(memoryStream))
{




          ZipEntry entry = new ZipEntry("...");
          //...

          zipStream.PutNextEntry(entry);
          zipStream.Write(data, 0, data.Length);
          //...


          zipStream.Finish();
          zipStream.Close();

}

Edit ::

内容,您通常需要解压缩文件,获取 ZipEntry ,更改并使用 MemoryStream 写入 ZipOutputStream 。
使用这篇文章 http://www.codeproject.com/KB/cs/Zip_UnZip.aspx< /a>

You can use something like

 Stream inputStream = //... File.OpenRead(...);

  //for read file
 ZipInputStream zipInputStream = new ZipInputStream(inputStream));

 //for output 
 MemoryStream memoryStream  = new MemoryStream();



using ( ZipOutputStream zipStream = new ZipOutputStream(memoryStream))
{




          ZipEntry entry = new ZipEntry("...");
          //...

          zipStream.PutNextEntry(entry);
          zipStream.Write(data, 0, data.Length);
          //...


          zipStream.Finish();
          zipStream.Close();

}

Edit ::

You need in general unZip your file, get ZipEntry , change , and write in ZipOutputStream with MemoryStream.
Use this article http://www.codeproject.com/KB/cs/Zip_UnZip.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文