Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.8K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda