【发布时间】:2021-01-07 02:45:56
【问题描述】:
我正在努力将数据从 Azure Blob 发送到接受 POST 请求以上传应为 xlsx 或 csv 格式的文件的平台。
为了使我的代码正常工作,首先需要使用 open() 库将 blob 数据写入文件,然后将文件作为 io.BufferedReader
问题: 我的问题是我需要使用 azure function app 在生产环境中运行此代码。应用程序不允许我简单地使用 os 和 open() 我尝试使用 io.BytesIO 从 blob 获取字节数据,但 API 无法将其识别为 csv 或 xlsx 文件
有没有办法使用内存中的数据并将其用于 POST 请求?
这是我的代码:
# GETTING BLOB DATA AND UPLOADING IT USING POST REQUEST
from datetime import datetime, timezone, timedelta
import requests
import json
import os
from requests.auth import HTTPBasicAuth
from azure.storage.blob import BlobClient
# Get excel or csv file from azure blob storage (stored as blob)
# 1. Getting the blob data
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING") # Hard coding key when in production
container_name = 'CONTAINER_NAME'
blob_name = 'TEST.xlsx'
blob_client = BlobClient.from_connection_string(connect_str,container_name,blob_name)
data = blob_client.download_blob()
# Writing the Data into a file and then
# Reading back into the program to create
# io.BufferedReader <name='TEST.xlsx'> object for POST request
with open(blob_name,'wb') as file_content:
file_content.write(data.readall())
file_content.close()
f_data = open(blob_name,'rb')
_id = 'jkdfhiuweh93o0' # list_id for post request
file_name = "TEST"
url = "https://platform.com/api/uploadFile" # API endpoint
auth = {"X-Gatekeeper-SessionToken": "915760344f3a450e83e5fae98a78d87e"}
body = {"id": _id,'listname':file_name}
# Making a POST request and uploading the data
file_upload = requests.post(url, headers=auth, files=f_data, data=body)
print(file_upload.json())
我一直在寻找解决方案好几个星期,但没有运气...... 非常感谢任何 cmets 和帮助。
【问题讨论】:
-
你好。由于您正在运行python。你试过直接使用pypi.org/project/azure-storage-blob
-
感谢@Jean-MarcVolle 的回复 是的,我已经使用了该库,它也只显示了一种下载文件的方法。正如我所解释的,我似乎无法在 azure function app 中使用 os 来临时下载和上传文件。
-
你指的azure函数应用是什么?
-
我在此处发布的代码将成为基于 HTTP 触发器的函数应用程序 (docs.microsoft.com/en-us/azure/azure-functions/…) 的一部分。因此代码将嵌入 init.py 文件中,并在调用 GET 请求到 azure 函数应用时执行。我只需要一种从 blob 获取数据的方法,将其转换为 io.BufferedReader 并将该文件添加到 POST 请求中,而无需保存和读取文件
-
能否请您提供有关您的帖子 api 的代码?
标签: python-3.x azure python-requests azure-blob-storage azure-function-app