Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

677
Vistas
Error de decodificación FastAPI/Mangum JSON al cargar varios archivos

Estoy tratando de crear una API de carga de archivos sin servidor usando FastAPI/Mangum y me encuentro con un extraño problema de decodificación JSON cuando intento seguir el ejemplo en los documentos. Aquí está mi código

 # main.py import os from typing import List from fastapi import FastAPI, File, UploadFile from fastapi.responses import HTMLResponse from mangum import Mangum app = FastAPI() @app.get("/") async def main(): content = """ <body> <form action="/registration/create" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <input type="submit"> </form> </body> """ return HTMLResponse(content=content) @app.post("/registration/create") async def create_registration(files: List[UploadFile]): return {"file_len": len(files)} handler = Mangum(app)
 # test_main.py from urllib import response from fastapi.testclient import TestClient from main import app client = TestClient(app) def test_registration(): files = [('files', ('example.txt', open('example.txt', 'rb'), 'text/plain'))] response = client.post("/registration/create", files=files) assert response.status_code == 200

Cuando ejecuto la prueba o intento publicar archivos usando el ejemplo de la página web, recibo un error de decodificación JSON y la solicitud falla con 422:

 { "detail": [{"loc":["body",0], "msg":"Expecting value: line 1 column 1 (char 0)", "type":"value_error.jsondecode", "ctx": { "msg": "Expecting value", "doc": "\nContent-Disposition: form-data; name=\\"files\\"; filename=\\"example.txt\\"\\r\\nContent-Type: text/plain\\r\\n\\r\\nexample text in the file\n", "pos":0, "lineno":1, "colno":1 } }] }

Aquí está la página de documentos a la que hago referencia: https://fastapi.tiangolo.com/tutorial/request-files/#multiple-file-uploads

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debe definir el parámetro de archivos como se muestra a continuación. Además, "file_len": len(files) devolvería la cantidad de archivos recibidos, no la longitud del archivo de cada archivo en la List . Para hacer eso, debe recorrer la lista de archivos y encontrar la longitud de cada archivo (después de leer el contenido de cada archivo), como se muestra a continuación. Por favor, eche un vistazo a la documentación también.

 async def create_registration(files: List[UploadFile] = File(...)): return {"file_sizes": [len(await file.read()) for file in files]}

o haga que FastAPI lea el contenido por usted, declarando el tipo de su parámetro como bytes .

 async def create_registration(files: List[bytes] = File(...)): return {"file_sizes": [len(file) for file in files]}
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda