【发布时间】:2023-02-21 23:23:54
【问题描述】:
我正在进行一个 API 调用,它应该返回一个 PNG 列表。我将 PNG 存储在 blob 存储中,并且能够成功获取它们。在过去,当我只需要返回一个图像时,我会将 blob 转换为内存流,然后只在客户端处理内存流。不过,这似乎不适用于多个文件。
[HttpGet("getThumbnails/{seriesId}")]
public async Task<ActionResult<List<MemoryStream>>> GetThumbnails(string seriesId)
{
var pngs = await _service.LoadPNGsMs(seriesId);
Response.ContentType = "image/png ";
return pngs;
}
public async Task<List<MemoryStream>> LoadPNGsMs(string seriesID)
{
var returnList = new List<MemoryStream>();
var blobls = await _azureBlobStorageService.GetBlockBlob(seriesID);
foreach (var blob in blobls)
{
var stream = new MemoryStream();
await blob.DownloadToStreamAsync(stream);
stream.Position = 0;
returnList.Add(stream);
}
return returnList;
}
public async Task<List<CloudBlockBlob>> GetBlockBlob(string seriesID)
{
var blobFiles = containerClient.GetBlobs(prefix: seriesID);
var blobFilePaths = blobFiles.Select(x => x.Name).ToList();
List<CloudBlockBlob> cloudBlockBlobs = new List<CloudBlockBlob>();
foreach (var blob in blobFilePaths)
{
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blob);
bool isExists = await blockBlob.ExistsAsync();
if (isExists)
cloudBlockBlobs.Add(blockBlob);
}
return cloudBlockBlobs;
}
运行此代码时出现 406。我是否将响应类型设置为 image/png 太多了?我应该只使用 blob 而忘记内存流吗?我会继续在这里玩这个,如果我发现任何东西,我会发布结果。
【问题讨论】: