从Azure存储中以zip格式下载多个Blob文件

时间:2018-08-01 17:56:57

标签: c# azure download odata zipfile

我已经创建了一种Web API方法,可以从azure存储中下载blob文件,并且可以正常工作,并且我编写了仅下载一个文件的代码,但是我想从Azure Blob Storage中以zip文件的形式下载许多blob文件。 。

因此,我的问题很简单:如何从内存流转换或制作zip文件?我循环并获得了如下所示的内存流列表,但是我不知道如何将此列表附加到Zip并以HttpResponseMessage的形式返回,有人可以帮助我将多个Memorystream附加到zip文件吗?

并且请找到我编写的用于从Azure下载blob文件的以下方法。

API方法,

{
  var document = DataContext.Documents.FirstOrDefault(d => d.DocumentId == 
  documentId && d.IsActive `enter code here`);

  //azure storage connection
  CloudBlockBlob blob = GetBlobReferece(document);

  MemoryStream memStream = new MemoryStream();

 //downloads the memory stream of a 
 await blob.DownloadToStreamAsync(memStream);


        HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
        httpResponseMessage.Content = new ByteArrayContent(memStream.ToArray());
        httpResponseMessage.Content.Headers.Add("x-filename", document.FileName);
        httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        httpResponseMessage.Content.Headers.ContentDisposition.FileName = document.FileName;
        httpResponseMessage.StatusCode = HttpStatusCode.OK;

        return httpResponseMessage;
 }

尝试使用多个Blob文件

    List<MemoryStream> memStList = new List<MemoryStream>();
    for (int i = 1; i <= 3; i++)
    {
            CloudBlockBlob b = GetBlobReferece(documentList[i - 1]);
            MemoryStream ms = new MemoryStream();
            b.DownloadToStreamAsync(ms);
            memStList.Add(ms);

    } 

0 个答案:

没有答案
相关问题