Не удалось загрузить файл.Давать исключение - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь загрузить несколько файлов в формате zip, используя zipOutputStream. Это дает исключение в blob.DownloadToStream (zipOutputStream); линия

List<string> lstPath = DAL_AttachmentSQLHelper.GetAllAttachementPath(claimId);            
            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
            var container = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference("traveoappclaimattachments/Traveo1");           
            using (var zipOutputStream = new ZipOutputStream(System.Web.HttpContext.Current.Response.OutputStream))
            {
                foreach (var blobFileName in lstPath)
                {
                    zipOutputStream.SetLevel(0);
                    var blob = container.GetBlockBlobReference(blobFileName);
                    var entry = new ZipEntry(blobFileName);
                    zipOutputStream.PutNextEntry(entry);
                    blob.DownloadToStream(zipOutputStream);
                }
                zipOutputStream.Finish();
                zipOutputStream.Close();
            }
            System.Web.HttpContext.Current.Response.BufferOutput = false;
            System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + "zipFileName.zip");
            System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
            System.Web.HttpContext.Current.Response.Flush();
            System.Web.HttpContext.Current.Response.End();

1 Ответ

0 голосов
/ 26 июня 2019

Одна проблема, которую я вижу с вашим кодом, заключается в том, как вы создаете экземпляр CloudBlobContainer в своем коде.Предполагая, что ваше имя контейнера traveoappclaimattachments и все файлы находятся в Traveo1, вы можете попробовать что-то вроде ниже:

List<string> lstPath = DAL_AttachmentSQLHelper.GetAllAttachementPath(claimId);            
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
var container = cloudStorageAccount.CreateCloudBlobClient().GetContainerReference("traveoappclaimattachments");           
using (var zipOutputStream = new ZipOutputStream(System.Web.HttpContext.Current.Response.OutputStream))
{
    foreach (var blobFileName in lstPath)
    {
        zipOutputStream.SetLevel(0);
        var blob = container.GetBlockBlobReference("Traveo1/" + blobFileName);
        var entry = new ZipEntry(blobFileName);
        zipOutputStream.PutNextEntry(entry);
        blob.DownloadToStream(zipOutputStream);
    }
    zipOutputStream.Finish();
    zipOutputStream.Close();
}
System.Web.HttpContext.Current.Response.BufferOutput = false;
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + "zipFileName.zip");
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
...