【问题标题】:Saving file into Azure Blob将文件保存到 Azure Blob
【发布时间】:2020-07-17 11:36:32
【问题描述】:

我正在使用下面的 python 代码将文件保存到本地文件夹中。我想将此文件直接保存到 Azure Blob。我不希望文件存储在本地,然后上传到 blob。

我尝试在文件夹变量中提供 blob 位置,但没有成功。我有想要从 Web 浏览器读取并使用 python 保存到 Azure blob 中的 excel 文件。

 folder = 'Desktop/files/ab'
    
 r = requests.get(api_end_point, headers=api_headers, stream=True)
 with open(folder, 'wb') as f:
    f.write(r.content)

【问题讨论】:

  • 如果我理解正确,您正在从 api 端点读取一个文件,然后想将该文件的内容上传到 blob 存储中,而无需先将其保存在本地。对吗?
  • 是的,你是对的。
  • 您的 API 端点是否可公开访问?我的意思是如果我把你的 API 端点粘贴到浏览器中,我能在浏览器中看到文件的内容吗?
  • 不,不是。我正在点击内部端点并能够将文件下载到本地。
  • 不幸的是,如果不下载内容,就不可能。不过,您无需将其保存为本地文件。您可以简单地读取流并使用该流创建一个 blob。

标签: python-3.x azure python-requests azure-functions


【解决方案1】:

首先,您应该以流的形式获取文件。

import os
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

connect_str = os.getenv('str')
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
container_name = "test"
container_client = blob_service_client.get_container_client(container_name)
blob_client = blob_service_client.get_blob_client(container_name, "MyFirstBlob.txt")
blob_client.upload_blob(req.get_body(), blob_type="BlockBlob")

在我这边,我将数据放在请求正文中,然后将其上传到 azure blob。是流。你也可以在里面放一个流。

这些是官方文档:

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python#upload-blobs-to-a-container

https://docs.microsoft.com/en-us/azure/developer/python/sdk/storage/azure-storage-blob/azure.storage.blob.blobserviceclient?view=storage-py-v12

https://docs.microsoft.com/en-us/azure/developer/python/sdk/storage/azure-storage-blob/azure.storage.blob.blobclient?view=storage-py-v12#upload-blob-data--blob-type--blobtype-blockblob---blockblob----length-none--metadata-none----kwargs-

【讨论】:

  • 谢谢。您能帮我定义一下如何将数据放入 req 对象吗?
  • @Andrew 在我这边,我只是使用邮递员来发布数据。您不必在upload_blob() 方法中放入req 正文,任何流都可以。
  • @Andrew 在我这边,我使用req.get_body(),但你不需要这样做。只需将其替换为您要上传的流即可。在您这边,您可以将您的 excel 文件作为流读取并将流放入 upload_blob() 方法。
  • @Andrew 你能标记我的答案来结束这个问题吗?谢谢。:)
猜你喜欢
  • 2020-08-25
  • 2021-09-20
  • 1970-01-01
  • 2021-08-22
  • 2018-04-20
  • 2021-03-19
  • 1970-01-01
  • 2021-12-08
  • 2020-02-11
相关资源
最近更新 更多