ste*_*tev 4 python file-upload http-status-code-422 fastapi
我正在使用官方文档中的示例: https: //fastapi.tiangolo.com/tutorial/request-files/#import-file
服务器代码:
@app.post("/uploadfile")
async def create_upload_file(data: UploadFile = File(...)):
print("> uploaded file:",data.filename)
return {"filename": data.filename}
Run Code Online (Sandbox Code Playgroud)
客户端代码:
files = {'upload_file': open('config.txt', 'rb')}
resp = requests.post(
url = URL,
files = files)
print(resp.json())
Run Code Online (Sandbox Code Playgroud)
问题是服务器总是响应 422 错误:
{'detail': [{'loc': ['body', 'data'], 'msg': 'field required', 'type': 'value_error.missing'}]}
Run Code Online (Sandbox Code Playgroud)
我在服务器和客户端上都使用 Python 3,并且 python-multipart 包已经安装。
有人可以告诉我我做错了什么,我错过了什么,我应该如何修复代码?
非常感谢任何提示。
在客户端添加文件时,您应该使用与服务器端参数相同的名称。在您的情况下,该参数称为data,如下所示:
@app.post('/uploadfile')
async def create_upload_file(data: UploadFile = File(...)):
^^^^
Run Code Online (Sandbox Code Playgroud)
因此,您应该在客户端替换 upload_file为data,如下所示:
url = 'http://127.0.0.1:8000/uploadfile'
files = {'data': open('config.txt', 'rb')}
r = requests.post(url=url, files=files)
Run Code Online (Sandbox Code Playgroud)
有关如何使用 Python 请求和 FastAPI 上传文件的更多详细信息和示例,请参阅此答案以及此处、此处和此处。
| 归档时间: |
|
| 查看次数: |
4196 次 |
| 最近记录: |