在使用Django项目中,From表单提交了图片集合
var formdata = new FormData();
formdata.append("csrfmiddlewaretoken",'{{ csrf_token }}');
if ($('.js_file')[0].files.length > 0){
$.each($('.js_file')[0].files, function (index,file) {
formdata.append("file",file);
})
}
当我在View.py中获取图片的时候打印
print('-----------:',request.FILES)
结果
<MultiValueDict: {'file': [<InMemoryUploadedFile: wx_friends.png (image/png)>, <InMemoryUploadedFile: wx_qrcode.png (image/png)>, <InMemoryUploadedFile: wx_wechat.png (image/png)>]}>
获取
imgs = request.FILES.get('file')
却只能获取到一个文件.
原因在于django 默认是只处理单个文件上传的,要一次性批量处理多个文件上传就得采用这种方法。MultiValueDict这种字典类是特殊定义的,如果需要取得list 需要调用 getlist方法
所以获取图片的正确方式是
for img in imgs:
imageName = imagesPath + '/' + img.name
file = open(imageName, 'wb')
for chunk in img.chunks():
file.write(chunk)
file.close()