• python fastapi 使用 UploadFile 接收多个图片文件并上传多个文件


    0. 接口
    import uvicorn
    from typing import  List
    from fastapi import FastAPI, File, UploadFile
    import asyncio
    
    app = FastAPI()
    @app.post("/send_one_image") 
    async def update_item(file: List[UploadFile] = File(...),label:str=Form(None)):
    with open(f'{file.filename}.jpg','wb') as f: 
        f.write(await file.read())
    return {"res": '接收成功'}
    
    @app.post("/send_images")
    async def update_item(files: List[UploadFile] = File(...),label:str=Form(None)):
        lists = [i.filename for i in files]
        print(lists)
        count = 0
        for i in files:
            with open(f'{count}.jpg','wb') as f:
                f.write(await i.read())
            count += 1
        return {"res": len(files)}
    
    if __name__ == "__main__":
        uvicorn.run(app, host="0.0.0.0", port=9315)

    1.python 上传多个文件

     1.1

    pip install requests_toolbelt

    from requests_toolbelt.multipart.encoder import MultipartEncoder
    
    list_urls = ['https://sun9-63.userapi.com/c638920/v638920705/1a54d/xSREwpakJD4.jpg',
     'https://sun9-28.userapi.com/c854024/v854024084/1160d8/LDMVHYgguAw.jpg',
     'https://sun9-54.userapi.com/c854220/v854220084/111f66/LdcbEpPR6tg.jpg',
     'https://sun9-40.userapi.com/c841420/v841420283/4c8bb/Mii6GSCrmpo.jpg']
    
    headers0={
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
    }
    fields = [("files",(i.split('/')[-1],requests.get(i,headers=headers0).content)) for i in list_urls]
    #fields.append(("boundary","--WebKitFormBoundary9K7xUkVGzyQA6e6h"))
    multipart_encoder = MultipartEncoder(fields)
    headers2 = {"Content-Type": multipart_encoder.content_type}
    resp = requests.post("http://127.0.0.1:9315/send_images", headers=headers2, data=multipart_encoder)
    print(resp.text)

      1.2 上传多个文件并提交表单

            

    list_urls = ['https://sun9-63.userapi.com/c638920/v638920705/1a54d/xSREwpakJD4.jpg',
                 'https://sun9-28.userapi.com/c854024/v854024084/1160d8/LDMVHYgguAw.jpg',
                 'https://sun9-54.userapi.com/c854220/v854220084/111f66/LdcbEpPR6tg.jpg',
                 'https://sun9-40.userapi.com/c841420/v841420283/4c8bb/Mii6GSCrmpo.jpg']
    
    headers0 = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
    }
    fields = [("files", (i.split('/')[-1], requests.get(i, headers=headers0).content)) for i in list_urls]
    
    data = {"label":"上传表单"}
    response = requests.post('http://127.0.0.1:9315/send_images',files=fields,data=data)
    print(response.text)

    2. 接收单个文件

    image_url='https://sun9-40.userapi.com/c841420/v841420283/4c8bb/Mii6GSCrmpo.jpg'

    files={'file':(image_url.split('/')[-1],requests.get(image_url,headers=headers0).content))}

    data={'label':'文件'}

    res = requests.post(‘"http://127.0.0.1:9315/send_one_image"’,data=data,files=files)

    print(res.text)

  • 相关阅读:
    算法刷题day47
    对Docker基础镜像的思考,该不该选择alpine
    前端技能树,面试复习第 53 天—— 手写代码:数据处理 | 排序 | 扁平 | 去重 | 解析 | 分隔
    Apache ECharts简介
    【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进
    不care工具,在大数据平台中Hive能自动处理SQL
    Spring解决泛型擦除的思路不错,现在它是我的了。
    mariadb10.8 主主同步 相互复制
    PyTorch使用Tricks:学习率衰减 !!
    HUAWEI路由器DHCP+H3C路由器DHCP+锐捷路由器DHCP综合配置
  • 原文地址:https://blog.csdn.net/lwdfzr/article/details/125917522