将Blob上传到azure返回网址

时间:2013-08-19 15:58:16

标签: azure azure-storage azure-storage-blobs

azure中是否可以使用以下方案?:

我需要构建一个应用程序,它将根据用户提交进行一些繁重的处理,并将结果作为文件返回给用户。

  1. 步骤1:用户通过REST调用将数据提交到我的终端(asp.net web api)
  2. 第2步:Web角色返回报告的网址(尚未创建!)
  3. 步骤3:我的终端将工作转移到辅助角色并执行繁重的工作(2-3分钟)
  4. 步骤4:辅助角色结束作业并创建报告文件并将其上载到azure storage blob
  5. 步骤X:这就是我需要知道的可能性:在用户拨打电话后的第2步我需要立即将网址返回到尚未创建的报告中(我不想要用户)等待几分钟或在超时问题上运行)。我知道那个报告文件是唯一的,因此我需要知道我是否可以生成azure blob存储的url到我还没有创建的report123.docx?但是,在报告准备好2-3分钟后,用户将能够使用步骤2中生成的URL访问该报告。
  6. 类似于:在用户拨打电话后服务将响应:这是您的报告在2分钟内回来的网址...

1 个答案:

答案 0 :(得分:4)

当然,这是可能的。我现在可以创建大量的blob存储网址--- http://account1.blob.core.windows.net/Reports/john1.pdfhttp://account2.blob.core.windows.net/Reports/jane3.pdf,...

我假设您知道要使用的存储帐户名称,容器和最终Blob名称?如果是,只需以URL的形式将其返回给用户(您可以使用Storage Client DLL中的GetBlobReference来执行此操作)。您甚至可以在该blob中提出一个临时虚拟报告,其中显示“报告未完成,稍后再检查”,然后在报告完成后替换blob。

但我可以建议一个更好的方法吗?通过异步将Web API更改为。您的客户将提交作业,您将返回一个ID。然后,客户端将调用另一个API来检查作业状态,一旦作业完成,他们将返回URL。查看Azure Blob服务的Copy Blob API(或任何Azure Service Management API)作为参考。