0

我正在尝试从 Azure blob 存储中获取 blob 并将文件返回给用户以供下载。

现在我要做的是从 azure 获取文件,将其保存在本地,然后将文件作为使用静态文件返回:

   def getDownload(filename):
        try:
            file = blob.get_blob('picture', filename)
            with open(filename, 'w') as f:
                f.write(file)
        except:
            abort(400, 'Download blob fail')
        return static_file(filename, root='.', download=filename)

我正在尝试将其流式传输给用户,而无需先将文件保存在服务器中。

我怎样才能实现它?

4

1 回答 1

1

不幸的是,我没有任何 python 示例代码,但您可以为验证目的执行以下操作:

  1. 确保容器不可公开访问
  2. 客户端向您的 Web 应用程序向您的 Web 应用程序发送针对 Blob 中给定文件的请求
  3. 验证是否允许此客户端访问该 blob(如果没有,则返回 401 错误)
  4. 在短时间内为此 blob 创建共享访问签名(大约需要 5 分钟)
  5. 向客户端返回一个 303(参见其他)html 状态代码,其中包含 Location-Header 中 blob 的 url

例子:

客户端请求http://myservice.cloudapp.net/blobs/somefile.ext并验证访问资源。然后他将被重定向到http://mystorage.blob.core.windows.net/container/somefile.ext?SHARED_ACCESS_SIGNATURE。该链接仅对该客户可用几分钟。

于 2013-03-11T14:38:49.520 回答