публикуйте несколько изображений с помощью fastapi и запросов

#python #python-requests #fastapi

Вопрос:

Я хочу знать, как использовать запросы при использовании двух файлов изображений в качестве входных данных.

сервер

 from fastapi import FastAPI, File

app = FastAPI()

@app.post("/images")
def images(img1: bytes = File(...), img2: bytes = File(...)):
    # **do something**
    return {"message": "OK"}
 

Мне удалось опубликовать сообщение с curl командой, как показано ниже,

 curl -X POST 
  'http://127.0.0.1:8000/images' 
  -H 'accept: application/json' 
  -H 'Content-Type: multipart/form-data' 
  -F 'img1=@<IMG1_FILE>;type=image/<EXTENSION>' 
  -F 'img2=@<IMG2_FILE>;type=image/<EXTENSION>'
 

но я потерпел неудачу со сценариями, использующими запросы, как показано ниже, и получил 400 BAD Request

 import requests

url = "http://127.0.0.1:8000/images"
headers = {"accept": "application/json", "content-type": "multipart/form-data"}
files = {"img1": open("img1_path.jpg", "rb"), "img2": open("img2_path.jpg", "rb")}

response = requests.post(url, headres=headers, files=files)
 

кто-нибудь может мне помочь??

Комментарии:

1. headeres=headers — ты это имел в виду headers=headers ?

2. извините, это опечатка, да headers=headers

3. но исправленная опечатка не имеет значения, исправлена ли эта проблема

Ответ №1:

Во-первых, убедитесь, что вы установили python-multipart пакет.

Затем удалите заголовки content-type запроса «от», как показано ниже:

 import requests

url = "http://127.0.0.1:8000/images"
headers = {"accept": "application/json"}
files = {"img1": open("img1_path.jpg", "rb"), "img2": open("img2_path.jpg", "rb")}

response = requests.post(url, headers=heaers, files=files)
 

Комментарии:

1. спасибо, что это сработало!