0
我使用的是简单的Azure存储 - 下载大文件与MVC和SharedAccessFilePolicy
public ActionResult Download() {
return File(@"D:\Company\Installs\Download.exe", "application/octet-stream", "Download.exe");
}
这个伟大的工程正在下载从我们的网站的文件,当用户点击该文件,他们看到一个进度%当文件正在下载时。
我们现在正在转向Azure文件存储,并试图模拟相同的过程,但使用CloudStorageAccount。总的来说,它工作得很好,但我想为用户提供相同的用户体验。我认为我非常接近解决这个问题,但最终的'回报'并没有给我一个有效的ActionResult。
public async Task<ActionResult> Download() {
var fileName = "Download.exe";
var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;....");
var fileClient = storageAccount.CreateCloudFileClient();
var share = fileClient.GetShareReference("downloads");
if (!await share.ExistsAsync()) {
return new EmptyResult();
}
var rootDir = share.GetRootDirectoryReference();
var cloudFile = rootDir.GetFileReference(fileName);
if (!await cloudFile.ExistsAsync()) {
return new EmptyResult();
}
var policy = new SharedAccessFilePolicy
{
Permissions = SharedAccessFilePermissions.Read,
SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-15),
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1)
};
var url = cloudFile.Uri.AbsoluteUri + cloudFile.GetSharedAccessSignature(policy);
// return File(url, "application/octet-stream", fileName);
return Redirect(url);
}
返回的URL可以复制/粘贴到浏览器中,并且文件正确下载。但是当它作为FilePathResult被返回时,我得到了ERR_INVALID_RESPONSE,奇怪的是,这个方法被调用了3次。奇怪的。
有人可以帮助我的最后一行代码?
在此先感谢!