【发布时间】:2019-12-15 08:33:38
【问题描述】:
我正在开发用于存储我的文件的 blob 存储系统。 现在,我可以从我的 blob 容器中删除/取消删除文件。 我正在尝试将文件从我的控制器下载回浏览器并删除该文件。
这是我的下载控制器
public ActionResult DownloadBlob(string name) {
CloudBlobContainer container = GetCloudBlobContainer();
var resultSegment = container.ListBlobsSegmentedAsync(name.Split('/')[0],true ,BlobListingDetails.All,null,null,null,null).Result;
CloudBlockBlob target = (CloudBlockBlob)resultSegment.Results.FirstOrDefault(e => e.Uri.Segments.Last() == name.Split('/')[1]);
//var directory = container.GetDirectoryReference(name.Split('/')[0]);
//var block = directory.GetBlockBlobReference(name.Split('/')[1]);
if (target.ExistsAsync().Result) {
} else {
target.UndeleteAsync().Wait();
}
Stream stream = target.OpenReadAsync().Result;
string contentType = target.Properties.ContentType;
;
target.DeleteIfExistsAsync();
return new FileStreamResult(stream, contentType) {
FileDownloadName = "Downloaded_" + name.Split('/')[1]
};
}
所以如果我有一个已删除的文件,我想取消删除它,下载它然后再次删除它。(软删除已打开) 有没有办法做到这一点,以便在返回语句后执行删除
【问题讨论】:
-
您应该将控制器操作更改为
async,这样它在.Result被阻止时不会死锁。
标签: c# asp.net-mvc azure .net-core azure-blob-storage