DotNetZipを使用して1つ以上のファイルを圧縮する方法がありますが、正しく機能しています。本日初めてエラーが発生しましたが、アーカイブの合計サイズに関係しているようです。同じ60mb.tiffイメージを使用して、コピーをいくつか追加し、テストして、繰り返します。約10枚の画像が追加されるまでは正常に機能しましたが、WinRarを使用してZipファイルを開くと、「予期しないアーカイブの終了」エラーが発生しました。この方法でテストすることで、コードまたはファイルに関連する問題(破損など)を除外できたと思います。コードはエラーではなく、WinRarのみがエラーになります。Zipファイルを開くと、サイズが「0」のファイルが1つだけ表示されます。そのため、ある種のサイズ制限に達しているようで、アーカイブを作成できません。どちらの限界かわかりません。
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/zip";
HttpContext.Current.Response.AddHeader("content-disposition", "filename=" + "MyFileName" + DateTime.Now.ToString("MMddyyyy") + ".zip");
using (var zip = new Ionic.Zip.ZipFile())
{
zip.MaxOutputSegmentSize = 819200; // I tried adding this and it did not fix the problem
foreach (var file in files)
{
zip.AddFile(file.FileLocation, file.ZipFileDirectory).FileName =
(!string.IsNullOrEmpty(file.ZipFileDirectory) && (file.ZipFileDirectory != @"\")) ?
string.Format(@"{0}\{1}", file.ZipFileDirectory, file.FileName) :
file.FileName;
}
zip.Save(HttpContext.Current.Response.OutputStream);
}