首页 > 解决方案 > .txt 文件的 POST 请求

问题描述

我无法编写可以通过 POST 请求获取 .txt 文件的函数。

我有一个 .txt 文件,其中包含以下短语:Hello World!

服务器端:

from fastapi import FastAPI, File
from starlette.requests import Request
import io

app = FastAPI()
@app.post("/post_text_file")
def text_function(request: Request,
            file: bytes = File(...)):
    text = open(io.BytesIO(file), "r").read()
    return text  # Hello World!

客户端:

import requests

url = 'http://localhost:8000/post_text_file'
r = requests.post(url,data=open('Hello World.txt'))

在运行命令 uvicorn main:app 并在客户端运行代码后,我得到下一个答案:

在客户端:{'detail': 'There was an error parsing the body'}

在服务器端:“POST /post_text_file HTTP/1.1”400 错误请求

标签: pythonfastapi

解决方案


requests.post有一个files参数,您可以使用它来发送文件,如下所示:

import requests

url = "http://localhost:8000/post_text_file"
fin = open('Hello World.txt', 'rb')
files = {'file': fin}
try:
    r = requests.post(url, files=files)
finally:
    fin.close()

通常,随您的请求发送的文件可以request.files作为上传文件的字典进行访问。


推荐阅读