django image的MultiValueDictKeyError文件上传

 文锋仔- 发布于 2022-12-31 15:04

我花了很多时间试图解决这个问题 - 阅读Django文档,咨询表格但没有得到任何满意的结果.所以请耐心等待我.我试图从我的html模板上传一个图像文件.这是我的html表单

{% csrf_token %}

文件上传正确,我能够在HTML中看到上传的图像文件.

在我的views.py,

def upload_image(request, frameslug):

frame= VTryON.objects.get(slug=frameslug)
if request.method == 'POST':
    form = ImageUploadForm(request.POST, request.FILES)
    print "FILES", request.FILES
    if form.is_multipart():
        save_file(request.FILES['image'])
        return HttpResponseRedirect('Successful')
    else:
        return HttpResponse('Invalid image')
else:
    form = ImageUploadForm()
return render_to_response('dummy.html', {'form': form})


def save_file(file, path=''):
    ''' Little helper to save a file
    '''
    filename = file._get_name()
    fd = open('%s/%s' % (MEDIA_ROOT, str(path) + str(filename)), 'wb')
    for chunk in file.chunks():
        fd.write(chunk)
    fd.close()

在我的forms.py,

from django import forms
class ImageUploadForm(forms.Form):   
image = forms.ImageField(label='Select a file', help_text='max. 20 megabytes')

当我运行我的代码时,我收到此错误

MultiValueDictKeyError at /dummy/fr1234/

我的view.py中的print语句显示了这一点

FILES ]}>

这是追溯

Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\Work-Backup\LiClipse Workspace\vTryON_DJango_Integration\vTryON\views.py" in upload_image
  189.             save_file(request.FILES['image'])
File "C:\Python27\lib\site-packages\django\utils\datastructures.py" in __getitem__
  301.             raise MultiValueDictKeyError(repr(key))

Exception Type: MultiValueDictKeyError at /dummy/fr1234/
Exception Value: "'image'"

我知道enctype应该是multipart/form-data因为我已经在教程中阅读了它.另外,我没有在models.py中使用任何字段来存储上传的图像.相反,我想直接将它保存到thrIA MEDIA_URL位置.可能会出现问题吗?请帮忙.这让我很长时间了.提前致谢.

1 个回答
  • 我能够解决这个问题(花了很多时间并在朋友的帮助下......)

    我认为错误

    Exception Type: MultiValueDictKeyError at /dummy/fr1234/ Exception Value: "'image'"

    是因为request.FILES无法从用户输入获取上传的图像,原因是我提供的用户输入文件的名称是错误的!

    它应该是,request.FILES['uploadFromPC']而不是request.FILES['image'] 因为这是我在HTML中保留的名称.

    <input type="file" name="uploadFromPC" id="uploadFromPC" class="myButton" title="Upload From PC" value= "Upload from PC" onchange="uploadPC()" >
    

    这是一个愚蠢的错误,浪费了很多时间来修复它.. :(

    ..但是,好的学习.

    我希望这可以帮助那些试图做类似事情的人.虽然,如果有人能向我解释forms.py这里的使用,我想.是否可以在没有用户上传的情况下进行上传forms.py

    2022-12-31 15:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有