首页 > 解决方案 > 如何从 request.FILES.getlist('image') 获取文件数

问题描述

我正在尝试在我正在制作的应用程序中上传文件。我有一个输入字段(ImageField),它接受提交后要上传的多个图像。我通过 ajax 执行此操作,因此我想返回某种 json 对象,该对象具有尝试上传的图像总数和实际上传的图像数量。

def post_update(request):
    save_status = {'update_save': False, 'image_count': 0, 'image_save': 0}
    if request.method == 'POST':
        update = UpdateForm(request.POST)
        if update.is_valid():
            event = Event.objects.get(pk=request.POST['event_id'])
            update_form = update.save(False)
            update_form.update_by = request.user
            update_form.event = event
            update_form.save()
            save_status['update_save'] = True

            images = ImageForm(request.POST, request.FILES)
            files = request.FILES.getlist('image_path')
            save_status['image_count'] = request.FILES.count
            if images.is_valid():
                for f in files:
                    photo = Image( image_path=f, update_ref=update_form, image_title=images.cleaned_data.get('image_title'))
                    photo.save()
                    save_status['image_save'] += 1

我尝试了request.FILES.countrequest.FILES.length来获取计数,但无济于事并且一直出错。我的问题基本上是如何获取 request.FILES 中的文件数?

标签: python-3.xdjangodjango-views

解决方案


可以得到图像数量的长度,所以:

num_files = len(request.FILES.getlist('image_path'))

话虽如此,我建议改用表单,所以使用images.cleaned_data['image_path'],因为这些是表单已清理的项目。


推荐阅读