1
我正在使用ZipArchive,它主要工作,我看到的一個問題是,當文件下載我無法打開它與Windows默認歸檔例程。如果我單擊壓縮文件並提取所有內容,我會收到一條錯誤消息,指出沒有要提取的條目。任何人都知道這是爲什麼發生?對於它的價值,我可以用7zip打開相同的文件,並提取文件就好了。ZipArchive創建無效的ZIP條目
public virtual ActionResult GetZip()
{
var summary = GetBytes();
var response = new MemoryStream();
using (var stream = new MemoryStream())
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
var entry = archive.CreateEntry("myfiletozip" + fileExt);
using (var writer = new BinaryWriter(entry.Open()))
{
writer.Write(summary, 0, summary.Length);
}
stream.Seek(0, SeekOrigin.Begin);
stream.CopyTo(response);
}
}
response.Seek(0, SeekOrigin.Begin);
return this.File(response, MediaTypeNames.Application.Zip, "myzipfilename.zip");
}
UPDATE:
發現這個SO Answer和修改我的源代碼和它的工作....我仍然不知道爲什麼。
byte[] response;
using (var stream = new MemoryStream())
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
var entry = archive.CreateEntry("myfiletozip" + fileExt, CompressionLevel.Optimal);
using (var entryStream = entry.Open())
using (var fileToCompressStream = new MemoryStream(summary))
{
fileToCompressStream.CopyTo(entryStream);
}
}
response = stream.ToArray();
}
'this.File(...)'做了什麼? – Dawnkeeper
我認爲問題在於我沒有明確地處理entry.Open()在第二個示例/ update中,如果爲條目添加了另一個using語句,這似乎給了我正確的行爲。 –