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

1.7K
Views
Envíe un archivo csv a fastAPI y obtenga un archivo nuevo

Tengo este código muy simple que obtiene un diccionario como entrada y también devuelve un diccionario:

 app = FastAPI() class User(BaseModel): user_name: dict @app.post("/") def main(user: User): ## some processing return user

Estoy llamando a esto con el siguiente código de python:

 import requests import json import pandas as pd df = pd.read_csv("myfile.csv") data = {} data["user_name"] = df.to_dict() headers = {'content-type': 'application/json'} url = 'http://localhost:8000/' resp = requests.post(url,data=json.dumps(data), headers=headers ) resp

Ahora, quiero hacer algo similar, pero en lugar de enviar los datos con una solicitud de python, quiero cargar un archivo local, enviarlo a la API y recuperar un archivo .csv procesado.

Ahora tengo el siguiente código para subir un archivo:

 from typing import Optional from fastapi import FastAPI from fastapi import FastAPI, File, UploadFile from pydantic import BaseModel from typing import List from fastapi.responses import HTMLResponse app = FastAPI() class User(BaseModel): user_name: dict @app.post("/files/") async def create_files(files: List[bytes] = File(...)): return {"file_sizes": [len(file) for file in files]} @app.post("/uploadfiles/") async def create_upload_files(files: List[UploadFile] = File(...)): return {"filenames": [file.filename for file in files]} @app.get("/") async def main(): content = """ <body> <form action="/files/" enctype="multipart/form-data" method="post"> <input name="files" type="file" multiple> <input type="submit"> </form> </body> """ return HTMLResponse(content=content)

ingrese la descripción de la imagen aquí

Esto me permite seleccionar y cargar un archivo: ingrese la descripción de la imagen aquí

Pero cuando hago clic en enviar, soy redirigido a: http://localhost:8000/uploadfiles/ y obtengo el siguiente error:

 {"detail":"Method Not Allowed"}

¿Cómo puedo enviar el archivo para su procesamiento a la API y obtener un archivo como respuesta?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Copié tu código y me sale el mismo error. Después de revisar la documentación de FastAPI para solicitar archivos , se menciona que

Para recibir archivos cargados, primero instale python-multipart.

Por ejemplo, pip install python-multipart .

Esto se debe a que los archivos cargados se envían como "datos de formulario".

Después de instalar la biblioteca python-multipart , el código funcionó perfectamente.

Referencias:

  • https://andrew-d.github.io/python-multipart/
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!