将 Blob 上传到 azure 返回 url

Dav*_*ury 0 azure azure-storage azure-storage-blobs

在 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 返回到尚未创建的报告(我不希望用户等待分钟或运行超时问题)。我知道该报告文件将是唯一的,因此我需要知道是否可以将 azure blob 存储的 url 生成到尚未创建的 report123.docx 中?但是,在报告准备好 2-3 分钟后,用户将能够使用步骤 2 中生成的 URL 访问该报告。

类似于:在用户拨打电话后,服务将响应:这是您的报告在 2 分钟后返回的网址...

kwi*_*ill 5

当然,这是可能的。我现在可以创建很多 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 更改为 by async。您的客户将提交作业,您将返回一个 ID。客户端然后会调用另一个 API 来检查作业状态,一旦作业完成,他们就会取回 URL。查看 Azure Blob 服务的 Copy Blob API(或任何 Azure 服务管理 API)作为参考点。