使用 azure 函数从表单数据请求中详细说明并存储在 azure blob 中的多个文件
Elaborate and store inside an azure blob multiple files from a form-data request by using azure functions
我正在开发一个 azure 函数,它通过表单数据格式在输入中接收多个不同格式的文件(例如 xlsx、csv、txt、pdf、png)。这个想法是开发一个函数,可以获取文件并将它们一个一个地存储在一个 blob 中。目前,我的代码如下:
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
filename, contents = False, False
try:
files = req.files.values()
for file in files:
filename = str(file.filename)
logging.info(type(file.stream.read()))
contents = file.stream.read().decode('utf-8')
except Exception as ex:
logging.error(str(type(ex)) + ': ' + str(ex))
return func.HttpResponse(body=str(ex), status_code=400)
然后我在 blob 中写入内容变量,但 blob 中的文件大小为 0,如果我尝试下载文件,文件为空。我如何管理此操作以将不同格式的文件存储在 blob 中?非常感谢您的支持!
下面是上传多个不同格式文件的代码:
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient,PublicAccess
import os
def UploadFiles():
CONNECTION_STRING="ENTER_STORAGE_CONNECTION_STRING"
Container_name="uploadcontainer"
service_client=BlobServiceClient.from_connection_string(CONNECTION_STRING)
container_client = service_client.get_container_client(Container_name)
ReplacePath = "C:\"
local_path = "C:\Testupload" #the local folder
for r,d,f in os.walk(local_path):
if f:
for file in f:
AzurePath = os.path.join(r,file).replace(ReplacePath,"")
LocalPath = os.path.join(r,file)
blob_client = container_client.get_blob_client(AzurePath)
with open(LocalPath,'rb') as data:
blob_client.upload_blob(data)
if __name__ == '__main__':
UploadFiles()
print("Files Copied")
根据你的问题,我无法了解你的函数是如何被触发的,以及你上传文件的位置。
因此,根据您的逻辑,您可以使用上面的代码来上传所有类型的文件。
目前以上代码可用于上传本地文件夹中的所有文件。以下是复制的屏幕截图:
我正在开发一个 azure 函数,它通过表单数据格式在输入中接收多个不同格式的文件(例如 xlsx、csv、txt、pdf、png)。这个想法是开发一个函数,可以获取文件并将它们一个一个地存储在一个 blob 中。目前,我的代码如下:
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
filename, contents = False, False
try:
files = req.files.values()
for file in files:
filename = str(file.filename)
logging.info(type(file.stream.read()))
contents = file.stream.read().decode('utf-8')
except Exception as ex:
logging.error(str(type(ex)) + ': ' + str(ex))
return func.HttpResponse(body=str(ex), status_code=400)
然后我在 blob 中写入内容变量,但 blob 中的文件大小为 0,如果我尝试下载文件,文件为空。我如何管理此操作以将不同格式的文件存储在 blob 中?非常感谢您的支持!
下面是上传多个不同格式文件的代码:
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient,PublicAccess
import os
def UploadFiles():
CONNECTION_STRING="ENTER_STORAGE_CONNECTION_STRING"
Container_name="uploadcontainer"
service_client=BlobServiceClient.from_connection_string(CONNECTION_STRING)
container_client = service_client.get_container_client(Container_name)
ReplacePath = "C:\"
local_path = "C:\Testupload" #the local folder
for r,d,f in os.walk(local_path):
if f:
for file in f:
AzurePath = os.path.join(r,file).replace(ReplacePath,"")
LocalPath = os.path.join(r,file)
blob_client = container_client.get_blob_client(AzurePath)
with open(LocalPath,'rb') as data:
blob_client.upload_blob(data)
if __name__ == '__main__':
UploadFiles()
print("Files Copied")
根据你的问题,我无法了解你的函数是如何被触发的,以及你上传文件的位置。 因此,根据您的逻辑,您可以使用上面的代码来上传所有类型的文件。
目前以上代码可用于上传本地文件夹中的所有文件。以下是复制的屏幕截图: