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

437
Vistas
FastAPI: cómo cargar un archivo a través de un formulario

Estoy creando una API REST que requiere cargar archivos. Con fines de prueba, estoy cargando archivos a través del cartero, pero no sé cómo acceder a los archivos del lado del servidor. Pude recuperar el _dict con fines de autenticación, pero para el file , devuelve None .

 #arguments - create, delete, view, list, search, upload, download @app.post("/incident-resource/{service}") async def incident_resource_service_handler(service, request: Request): try: session = Session() reqDataForm: FormData = await request.form() reqData = reqDataForm._dict file = reqDataForm.get('resource') # in form(key='resource', value=abc.jpeg) print(type(file)) #< class 'NoneType' > user = usr_getAuthenticatedUser(session, reqData) userRole = getRole(session, user.role_id) except Exception as e: session.rollback() return handleException(e)
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Según la documentación , "los archivos se cargarán como" datos de formulario ", y los recibirá declarando el tipo en su punto final como bytes o UploadFile . Si necesita enviar datos adicionales junto con el archivo, puede echar un vistazo en esta respuesta .

Sin embargo, si necesita hacer eso en la forma en que aborda el problema en su pregunta, eche un vistazo a continuación. Según la documentación de Starlette , puede obtener el nombre del archivo y el contenido de la siguiente manera. Cualquiera que sea el nombre de clave que proporcione en el lado del cliente, también debe usar ese en el lado del servidor. Debajo de "upload_file" se utiliza como clave. Si es necesario recibir y guardar archivos múltiples o de gran tamaño, considere usar la escritura asincrónica en su lugar, como se describe aquí .

lado del servidor

 @app.post("/upload") async def create_file(request: Request): form = await request.form() filename = form["upload_file"].filename contents = await form["upload_file"].read() with open(filename, 'wb') as f: f.write(contents) return filename

lado del cliente (ejemplo usando solicitudes de Python)

 import requests url = 'http://127.0.0.1:8000/upload' file = {'upload_file': open('test_files/a.txt','rb')} resp = requests.post(url=url, files = file) print(resp.json())

lado del cliente (ejemplo usando TestClient de FastAPI)

 from fastapi.testclient import TestClient from app import app client = TestClient(app) file = {'upload_file': open('test_files/a.txt','rb')} response = client.post("/upload", files = file) print(response.json())
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