Я занимаюсь разработкой веб-приложения с помощью asp.net, и у меня есть вопрос о SharZipLib.У меня есть файл с именем Template.odt (из Open Office), и этот файл является сжатым файлом (например, docx), и у нас есть несколько других файлов (manifest, xml, images и т. Д.).Мне нужно открыть этот файл, изменить файл с именем content.xml и styles.xml, сохранить в другом файле .odt и передать моему клиенту.Но я не уверен, что мы можем использовать временные файлы, поэтому я думал, как это сделать с помощью MemoryStream.
Посмотрите, что я получил:
protected byte[ GetReport() {
Stream inputStream = File.OpenRead(Server.MapPath("~/Odt/Template.odt"));
var zipInputStream = new ZipInputStream(inputStream);
var outputStream = new MemoryStream();
var zipOutputStream = new ZipOutputStream(outputStream);
ZipEntry entry = zipInputStream.GetNextEntry();
while (entry != null) {
if (entry.Name == "content.xml")
// how change the content ?
else if (entry.Name == "styles.xml")
// how change the content ?
// how to add it or create folders in the output ?
zipOutputStream.Write( ??? );
entry = zipInputStream.GetNextEntry();
}
zipOutputStream.Flush();
return outputStream.ToArray();
}
Я не уверен, еслиэто правильно, но я думаю, что это в пути.
Я пытаюсь взять ExtraData из экземпляра ZipEntry, но я получил его null, это нормально?
Может кто-нибудь мне помочь?
Спасибо