首页 > 解决方案 > 在 FastaApi 中请求文件

问题描述

我正在检索一个 csv 文件,该文件通过前端的表单发送到我的 fastapi 中的 api。该文件以 UploadFile 的形式恢复(原则上很好,因为如果我执行 file.filename 它会返回我上传到前端的 csv 的名称)但是当我将它传递给我的 InsertData 函数时,该函数需要一个 csv 并上传它到数据库,这给了我一个错误。有人可以告诉我如何更改我返回的文件类型吗?或者 InsertData 函数应该发生什么?这里我留下InsertData函数和api的代码。谢谢你。

接口:

from fastapi.datastructures import UploadFile
from starlette.responses import RedirectResponse
from fastapi import File

from model.prueba import MongoDB


router = APIRouter()

@router.post("/prueba", name="Insert the date in mongo", tags=["consultas"])
async def insertDate(file: UploadFile=File(...)):
        
        db = MongoDB.__init__(dBName="HAR", collectionName="date")
        MongoDB.InsertData(db,file.file)

插入数据:

import pymongo
from pymongo import MongoClient
import pandas as pd
import json



class MongoDB(object):

    def __init__(dBName=None, collectionName=None):

        client = MongoClient("localhost", 27017, maxPoolSize=50)

        DB = client[dBName]
        collection = DB[collectionName]
        
        return(collection)



    def InsertData(collection, path):

        df = pd.read_csv(path)
        data = df.to_dict('records')

        collection.insert_many(data, ordered=False)
        print("All the Data has been Exported to Mongo DB Server .... ")

标签: databasemongodbapifastapi

解决方案


推荐阅读