【问题标题】:Elaborate and store inside an azure blob multiple files from a form-data request by using azure functions使用 azure 函数从表单数据请求中详细说明并存储在 azure blob 中的多个文件
【发布时间】:2021-12-22 12:55:56
【问题描述】:

我正在开发一个 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 中?非常感谢您的支持!

【问题讨论】:

    标签: python azure azure-functions azure-blob-storage


    【解决方案1】:

    下面是上传多个不同格式文件的代码:

    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")
    

    根据您的问题,我无法了解您的功能是如何触发的,以及您在哪里上传文件。 因此,根据您的逻辑,您可以使用上面的代码上传所有类型的文件。

    目前上述代码可用于上传本地文件夹中的所有文件。下面是repro的截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2018-08-12
      • 2019-11-16
      • 1970-01-01
      相关资源
      最近更新 更多