从azure blob存储中返回blob而不保存它

时间:2013-03-11 13:19:18

标签: python azure bottle

我正在尝试从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)

我试图将其流式传输给用户而不先将文件保存在服务器中。

我怎样才能实现它?

1 个答案:

答案 0 :(得分:1)

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

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

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