【发布时间】:2016-02-17 01:11:35
【问题描述】:
我一直在关注 this example,将大文件从 MVC Web 应用程序分块上传到 Azure blob 存储。
在示例中,第一个控制器操作创建一个 blob 引用并将一些元数据存储在 Session 中:
var fileToUpload = new CloudFile()
{
BlockCount = blocksCount,
FileName = fileName,
Size = fileSize,
BlockBlob = container.GetBlockBlobReference(fileName),
StartTime = DateTime.Now,
IsUploadCompleted = false,
UploadStatusMessage = string.Empty
};
Session.Add("CurrentFile", fileToUpload);
允许每个连续的呼叫从中断的地方继续:
CloudFile model = (CloudFile)Session["CurrentFile"];
model.BlockBlob.PutBlock(*new chunk stream*);
很明显,这是为了在教程中方便而完成的,但对我来说应该如何完成并不明显。对于可扩展的云应用程序,我根本不想使用会话。
我的问题是,在每次上传块时简单地提交并重写到 blob 存储是否完全没问题,如果不是,是否有适合 Azure 应用程序的缓存替代方案?
如果它影响答案,我想从 javascript 调用 WebAPI 控制器,所以无论如何都没有会话。
【问题讨论】:
-
完全绕过这个 MVC 层并从浏览器直接将文件上传到 blob 存储是否是一个可接受的解决方案?
-
这是针对最终用户上传文件的网站,所以恐怕不是。
标签: c# azure asp.net-web-api azure-blob-storage azure-caching