При использовании этого кода для архивации голубых объектов изображения полностью архивируются при использовании localhost.Но при загрузке на веб-сайт Azure большие файлы данных архивируются не полностью, а при разархивировании выдается ошибка.
Пожалуйста, проверьте, есть ли какая-либо ошибка в этом коде, чтобы я мог знать, по крайней мере,причина этой ошибки
private void OutputBlobDirectoryAsZipDownload(CloudBlobDirectory directory, string filename)
{
byte[] buffer = new byte[4096];
using (var zipOutputStream = new ZipOutputStream(Response.OutputStream))
{
zipOutputStream.SetLevel(0); // 0 - store only to 9 - means best compression
Response.BufferOutput = false;
Response.AppendHeader("content-disposition", "attachment; filename=\"" + filename + ".zip\"");
Response.ContentType = "application/octet-stream";
try
{
var allFiles = directory.ListBlobs(true, BlobListingDetails.None, new BlobRequestOptions
{
ServerTimeout = new TimeSpan(1, 0, 0),
MaximumExecutionTime = new TimeSpan(1, 0, 0)
}).
Where(x => x.GetType() == typeof(CloudBlockBlob) && x.Uri.ToString().Contains("thumb$") != true).Cast<CloudBlob>();
if (allFiles.Count() > 0)
{
foreach (var file in allFiles)
{
Stream fs = file.OpenRead();
var entryName = file.Uri.ToString().Replace(directory.Uri.ToString(), "");
ZipEntry entry = new ZipEntry(ZipEntry.CleanName(entryName));
entry.Size = fs.Length;
zipOutputStream.PutNextEntry(entry);
int count = fs.Read(buffer, 0, buffer.Length);
while (count > 0)
{
zipOutputStream.Write(buffer, 0, count);
count = fs.Read(buffer, 0, buffer.Length);
if (!Response.IsClientConnected)
{
break;
}
Response.Flush();
}
fs.Close();
}
zipOutputStream.Close();
Response.End();
}
else
{
}
}
catch (Exception ex)
{
throw ex;
}
}
}