【问题标题】:Python FastAPI doesn't save content from POST file requestPython FastAPI 不保存来自 POST 文件请求的内容
【发布时间】:2021-03-31 13:30:08
【问题描述】:

我有这个简单的代码 sn-p,用于在 Python 中使用 FastAPI 上传 File

@app.post("/uploadfile")
async def create_upload_file(file: UploadFile = File(...)):
    contents = await file.read()
    print(str(contents)[2:-1])
    with open(file.filename, "wb") as buffer:
        buffer.write(file.file.read())
    return {"filename": file.filename}

我用我的前端 React 应用程序尝试了这个,它运行良好,除了它不保存我收到的数据。此代码应获取 csv 文件并将其保存在本地。如您所见,我从文件中打印了contents,并且打印的contents 是正确的,但是当我尝试使用buffer.write(file.file.read()) 将其保存在本地时,我只是创建了文件,但其中没有内容,也就是空的.另请注意,当我打印 contents 时,我将 csv 文件作为字符串获取。有没有办法解决这个问题,或者我需要处理字符串,将其转换为 csv,然后将此数据写入我创建的文件中?

【问题讨论】:

    标签: python fastapi


    【解决方案1】:

    文件数据一旦读取就不能再使用了。所以,只读一次

    【讨论】:

      【解决方案2】:

      我只想对您的代码进行更正以使其正常运行,并且我建议使用async read-write library

      import aiofiles
      
      @app.post("/uploadfile")
      async def create_upload_file(file: UploadFile = File(...)):
          contents = await file.read()
          print(str(contents)[2:-1])
          async with aiofiles.open(file.filename, mode='wb') as f:
              await f.write(contents)
          return {"filename": file.filename}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 2013-06-12
        • 1970-01-01
        • 2021-06-02
        • 2019-12-01
        • 1970-01-01
        相关资源
        最近更新 更多