您必须决定是要发送表单数据还是 JSON。两者结合都会失败。
以下示例向您展示如何通过 AJAX 将整个表单发送到服务器。请注意,未设置内容类型且未处理数据。只有这样,表单才会以“multipart/form-data”格式发送,这是上传文件所必需的。
<form name="my-form">
<fieldset>
<label for="upload-image">Add Photo</label>
<input type="file" id="upload-image" name="my-photo" />
</fieldset>
<button type="submit">Submit</button>
</form>
$(document).ready(() => {
$('form[name="my-form"]').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '/make_post_ajax',
data: new FormData(this),
cache: false,
contentType: false,
processData: false,
}).done(function() {
console.log('Successful uploaded photo.');
});
})
});
@app.post('/make_post_ajax')
def upload():
file = request.files.get('my-photo')
if file:
print(file)
return ''
abort(400)
如果您想使用 JSON,我建议在发送之前将图像数据转换为 Base64 字符串。