上传Blob到azure返回url



以下场景在azure中可能吗?:

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

  1. 步骤1:用户通过REST调用将数据提交给我的端点(asp.net web api)
  2. 步骤2:Web角色返回报告的url(尚未创建!)
  3. 第3步:我的端点将工作传递给工人角色,并完成繁重的工作(2-3分钟)
  4. 步骤4:Worker角色结束作业,创建一个报告文件并将其上传到azure存储blob
  5. 步骤X:如果可能的话,这就是我需要知道的:在步骤2,用户拨打电话后,我需要立即将url返回到尚未创建的报告(我不希望用户等待几分钟或出现超时问题)。我知道该报告文件是唯一的,因此我需要知道我是否可以为尚未创建的报告123.docx生成azure blob存储的url?然而,在2-3分钟后,当报告准备好时,用户将能够使用步骤2中生成的url访问该报告

类似于:用户拨打电话后,服务将做出响应:这是您的报告的url,2分钟后返回。。。

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

我假设您知道要使用的存储帐户名称、容器和最终blob名称?如果是,只需以URL的形式将其返回给用户(您可以使用存储客户端DLL中的GetBlobReference来执行此操作)。您甚至可以在该blob中放置一个临时的伪报告,上面写着"报告未完成,稍后检查"之类的内容,然后在报告完成后替换blob。

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

最新更新