【发布时间】:2023-01-05 02:46:27
【问题描述】:
我正在尝试使用 FastAPI/Mangum 创建一个无服务器文件上传 API,并且在尝试按照文档中的示例进行操作时遇到了一个奇怪的 JSON 解码问题。这是我的代码
# main.py
import os
from typing import List
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
from mangum import Mangum
app = FastAPI()
@app.get("/")
async def main():
content = """
<body>
<form action="/registration/create" enctype="multipart/form-data" method="post">
<input name="files" type="file" multiple>
<input type="submit">
</form>
</body>
"""
return HTMLResponse(content=content)
@app.post("/registration/create")
async def create_registration(files: List[UploadFile]):
return {"file_len": len(files)}
handler = Mangum(app)
# test_main.py
from urllib import response
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_registration():
files = [('files', ('example.txt', open('example.txt', 'rb'), 'text/plain'))]
response = client.post("/registration/create", files=files)
assert response.status_code == 200
当我运行测试或尝试使用网页示例发布文件时,我收到 JSON 解码错误并且请求失败并返回 422:
{
"detail":
[{"loc":["body",0],
"msg":"Expecting value: line 1 column 1 (char 0)",
"type":"value_error.jsondecode",
"ctx": {
"msg": "Expecting value",
"doc": "\nContent-Disposition: form-data; name=\\"files\\"; filename=\\"example.txt\\"\\r\\nContent-Type: text/plain\\r\\n\\r\\nexample text in the file\n",
"pos":0,
"lineno":1,
"colno":1
}
}]
}
这是我引用的文档页面:https://fastapi.tiangolo.com/tutorial/request-files/#multiple-file-uploads
【问题讨论】:
-
请查看this answer,以及this 和this 的回答。
标签: python python-requests fastapi