gpt4 book ai didi

python - 使用 python 'aiohttp' 发送文件产生 "There was an error parsing the body"

转载 作者:行者123 更新时间:2023-12-04 07:35:22 26 4
gpt4 key购买 nike

我试图让两个服务进行通信。第一个 API 向用户公开。
第二个是隐藏的,可以处理文件。所以第一个可以重定向请求。
我想使用 aiohttp 使 post 请求异步,但我面临这个错误:“解析正文时出错”
要重新创建错误:
让我们说这是服务器代码

from fastapi import FastAPI
from fastapi import UploadFile, File

app = FastAPI()

@app.post("/upload")
async def transcript_file(file: UploadFile = File(...)):
pass

这是客户端代码:
from fastapi import FastAPI
import aiohttp
app = FastAPI()

@app.post("/upload_client")
async def async_call():
async with aiohttp.ClientSession() as session:
headers = {'accept': '*/*',
'Content-Type': 'multipart/form-data'}
file_dict = {"file": open("any_file","rb")}
async with session.post("http://localhost:8000/upload", headers=headers, data=file_dict) as response:
return await response.json()
说明 :
  • 在端口 8000 上运行服务器,在您喜欢的任何端口上运行客户端
  • 打开浏览器并在客户端上打开文档。
  • 执行post请求,看到错误

  • 环境 :
  • aiohttp = 3.7.4
  • fastapi = 0.63.0
  • unicorn = 0.13.4
  • python-multipart = 0.0.2

  • Python版本:3.8.8

    最佳答案

    从这里 answer :

    If you are using one of multipart/* content types, you are actually required to specify the boundary parameter in the Content-Type header, otherwise the server (in the case of an HTTP request) will not be able to parse the payload.


    您需要删除 Content-Type 的显式设置 header ,客户端 aiohttp将为您隐式添加它,包括 boundary范围。

    关于python - 使用 python 'aiohttp' 发送文件产生 "There was an error parsing the body",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67776535/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com