【发布时间】:2022-11-20 20:01:35
【问题描述】:
在发送一些简单的 formData 时,我在使用 Fetch API JavaScript 方法时遇到一些问题,如下所示:
function register() {
var formData = new FormData();
var textInputName = document.getElementById('textInputName');
var sexButtonActive = document.querySelector('#buttonsMW > .btn.active');
var imagesInput = document.getElementById('imagesInput');
formData.append('name', textInputName.value);
if (sexButtonActive != null){
formData.append('sex', sexButtonActive.html())
} else {
formData.append('sex', "");
}
formData.append('images', imagesInput.files[0]);
fetch('/user/register', {
method: 'POST',
data: formData,
})
.then(response => response.json());
}
document.querySelector("form").addEventListener("submit", register);
在服务器端(FastAPI):
@app.post("/user/register", status_code=201)
def register_user(name: str = Form(...), sex: str = Form(...), images: List[UploadFile] = Form(...)):
try:
print(name)
print(sex)
print(images)
return "OK"
except Exception as err:
print(err)
print(traceback.format_exc())
return "Error"
单击提交按钮后,我得到Error 422: Unprocessable entity。因此,如果我尝试添加标题 Content-Type: multipart/form-data,它也无济于事,因为我得到另一个 Error 400: Bad Request。我想了解我做错了什么,以及如何在没有此类错误的情况下处理formData?
【问题讨论】:
标签: javascript python fetch fetch-api fastapi