Python django如何上传文件夹
我知道如何通过django上传多个文件,但如果文件夹中有子文件夹,我在上传文件夹时会遇到问题。django无法接收子文件夹。我找到了原因,因为浏览器使用“.”表示文件夹,但django无法解析它,然后停止解析。有没有一个优雅的方法来修复它 python代码: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
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和javascript获取文件夹名称
- 将其作为值传递给隐藏表单字段
- 在后端,您可以使用该名称创建目录
- 并在此目录中上载文件
非常感谢你。但你能解释一下我怎样才能在我的案子上应用过滤器吗?谢谢。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)