我已经创建了一种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);
}