Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

388
Views
¿Cómo enviar múltiples archivos con solicitudes de Python al servidor FastAPI?

Tengo el siguiente punto final en mi servidor FastAPI:

 @app.post("/submit") async def submit(file1: List[UploadFile] = File(...), file2: List[UploadFile] = File(...), file3: List[UploadFile] = File(...)): # do something return 'hello'

Funciona como se esperaba si uso la interfaz de usuario de Swagger. Sin embargo, no puedo entender cómo enviar una solicitud POST a este punto final usando el módulo de requests de Python. Esto es lo que he probado:

 import requests headers = { 'accept': 'application/json', 'Content-Type': 'multipart/form-data', } files = [ ('file1', open('file1.zip', 'rb')), ('file2', open('file2.txt', 'rb')), ('file3', open('file3.rar', 'rb')), ] response = requests.post('http://localhost:8000/submit', headers=headers, files=files) print(response.text)

Pero estoy recibiendo un error:

 {"detail":"There was an error parsing the body"}
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Debe definir cada file como un parámetro separado en el punto final, por ejemplo, file1: UploadFile = File(...) , file2: UploadFile = File(...) , etc. (sin usar List ) o, preferiblemente, defina una List de archivos usando files: List[UploadFile] = File(...) , como se muestra a continuación (lo siguiente se puede usar para devolver los nombres de archivo de todos los archivos cargados).

 @app.post("/submit") async def submitUPP(files: List[UploadFile] = File(...)): # do something return {"Uploaded Files:": [file.filename for file in files]}

En el lado del cliente, debe enviar la lista de archivos usando la misma key que proporcionó en el punto final (es decir, files en el caso anterior) para cada archivo.

 files = [ ('files', open('file1.zip', 'rb')), ('files', open('file2.txt', 'rb')), ('files', open('file3.rar', 'rb')), ]

Es posible que también desee echar un vistazo a this y this answer.

Importante

Además de lo anterior, no se debe establecer el Content-Type en los encabezados en multipart/form-data cuando se usan archivos, sino dejar que las solicitudes de Python establezcan el Content-Type , además de multipart/form-data , Content-Type debe incluir la cadena boundary utilizada para separar cada parte del cuerpo en la carga útil de varias partes). Por favor, eche un vistazo a las respuestas aquí y aquí . Establecer el Content-Type la forma en que lo hace es la razón del error que encontró, es decir, {'detail': 'There was an error parsing the body'} . Por lo tanto, debe evitar establecer el Content-Type en los encabezados.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!