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)