Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django如何上传文件夹_Python_Django_File Upload_Upload_Uploading - Fatal编程技术网

Python django如何上传文件夹

Python django如何上传文件夹,python,django,file-upload,upload,uploading,Python,Django,File Upload,Upload,Uploading,我知道如何通过django上传多个文件,但如果文件夹中有子文件夹,我在上传文件夹时会遇到问题。django无法接收子文件夹。我找到了原因,因为浏览器使用“.”表示文件夹,但django无法解析它,然后停止解析。有没有一个优雅的方法来修复它 python代码: def uploader_single(request): data = {} if request.method == 'POST': if True: for afile in r

我知道如何通过django上传多个文件,但如果文件夹中有子文件夹,我在上传文件夹时会遇到问题。django无法接收子文件夹。我找到了原因,因为浏览器使用“.”表示文件夹,但django无法解析它,然后停止解析。有没有一个优雅的方法来修复它

python代码:

def uploader_single(request):
    data = {}
    if request.method == 'POST':
        if True:
            for afile in request.FILES.getlist('file'):
                new_file = UploadFileSingle(file = afile)
                new_file.save()

            return HttpResponseRedirect('')
        else:
            print "form is not valid"
            return HttpResponseRedirect('')
    else:
        print 'not post'
class UploadFileSingle(models.Model):
    file        = models.FileField(upload_to='files/%Y/%m/%d', models.FilePath)
    uploaded_at = models.DateTimeField(auto_now_add=True)
    models.FilePathField.recursive = True
    models.FilePathField.allow_folders = True
    updated_at  = models.DateTimeField(auto_now=True)

    def some_folder = FilePathField(path='some_path', recursive=True, allow_files=True, allow_folders=True,)'
Python代码:

def uploader_single(request):
    data = {}
    if request.method == 'POST':
        if True:
            for afile in request.FILES.getlist('file'):
                new_file = UploadFileSingle(file = afile)
                new_file.save()

            return HttpResponseRedirect('')
        else:
            print "form is not valid"
            return HttpResponseRedirect('')
    else:
        print 'not post'
class UploadFileSingle(models.Model):
    file        = models.FileField(upload_to='files/%Y/%m/%d', models.FilePath)
    uploaded_at = models.DateTimeField(auto_now_add=True)
    models.FilePathField.recursive = True
    models.FilePathField.allow_folders = True
    updated_at  = models.DateTimeField(auto_now=True)

    def some_folder = FilePathField(path='some_path', recursive=True, allow_files=True, allow_folders=True,)'
HTML代码:

<input type="file" name="file" multiple = "true" webkitdirectory="true" directory = "true"/>

您可以使用django文件管理器


转发:

您可以使用django文件管理器


请重复:

有一个新的主题提出了相同的问题,我尝试回答:


基本上,这是Django的默认行为,如果您想要有不同的行为,您需要编写自己的上载处理程序

有一个新的主题,它提出了相同的问题,我尝试回答:


基本上,这是Django的默认行为,如果您想要有不同的行为,您需要编写自己的上传处理程序

我为这个问题想出了一个简单的解决方案

  • 您可以在前端通过html和javascript获取文件夹名称
  • 将其作为值传递给隐藏表单字段
  • 在后端,您可以使用该名称创建目录
  • 并在此目录中上载文件
HTML

观点


我想出了这个问题的简单解决办法

  • 您可以在前端通过html和javascript获取文件夹名称
  • 将其作为值传递给隐藏表单字段
  • 在后端,您可以使用该名称创建目录
  • 并在此目录中上载文件
HTML

观点


非常感谢你。但你能解释一下我怎样才能在我的案子上应用过滤器吗?谢谢。django过滤器不能这样做。我的结论是django还不能做。与问题无关。非常感谢。但你能解释一下我怎样才能在我的案子上应用过滤器吗?谢谢。django过滤器不能这样做。我的结论是django还不能做到这一点。这与问题无关。更推荐自己编写上传处理程序。更推荐自己编写上传处理程序
directory_name = form.cleaned_data['dir_name']
os.mkdir(os.path.join(settings.MEDIA_ROOT, directory_name))
handle_uploaded_file(request.FILES['file'], directory_name)