我是 Flask 的新手,我尝试使用 ajax 上传图片。即使我ImmutableMultiDict([])
从输入文件中添加名称,我仍然可以得到。request.files
我尝试了许多解决方案,但没有一个适合我。
**js-ajax **
$(document).ready(function () {
//alert('ya allah');
$('#upload-file').on('submit', function (event) {
var formDataRaw = $('#upload-file')[0];
var form_data = new FormData(formDataRaw);
$.ajax({
data: {
normal: +'',
anormal: +'',
r: +'',
form_data
},
type: 'POST',
url: '/process',
contentType: false,
cache: false,
processData: false,
async: false
})
.done(function (data) {#....some code
});
event.preventDefault();
});
});
我也在输入文件中添加了名称。
html端
<form id="upload-file" method="POST" enctype=multipart/form-data>
<fieldset style="border: none">
<div class="mt-2">
<label class="file btn btn-outline-gs m-2 my-sm-0 px-4 d_upload">
Upload IMG!
<input type="file"
id="imgInp"
name="photo"
class="i_upload"
hidden/>
</label>
</div>
</fieldset>
<fieldset style="border: none">
<div class="mb-2">
<input id="test"
type="submit"
value="Predect"
class="btn btn-outline-gs"
onclick="load(this)"/>
</div>
</fieldset>
</form>
而且我认为代码很干净,但仍然从 request.files 中获得了 ImmutableMultiDict([]),或者只是带有以下内容的括号request.files['input name']
:
if 'photo' in request.files:
photo = request.files['photo']
if photo.filename != '' and allowed_file(photo.filename):
photo.save(os.path.join('static/uploads', photo.filename))
print(photo.filename)
f=secure_filename(photo.filename)