在django中保存多个上传的文件 [英] save multiple uploaded files in django

查看:1104
本文介绍了在django中保存多个上传的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的应用程序中上传并保存多个文件,我有

< input type =textname =namevalue =/>

< input type =filename =filemultiple />


在我的模板中。当我点击上传,似乎

form = MyForm(request.POST,request.FILES)

只保存一个文件它是许多uloaded文件列表中的最后一个。如何能够使用表单 form = MyForm(request.POST,request.FILES)blah blah 保存所有上传的文件?感谢



修改

Myform 是一个模型表单这个模型。

  class Docs(models.Model):
name = models.CharField(max_length = 128)
file = models.FileField(max_length = 100,upload_to =documents /)


解决方案

你可以使用 request.FILES ['file'] request.FILE.get('文件')在MyFOrm中。他们只返回一个文件。



使用 request.FILE.getlist('file') 以获取多个文件。






在您的看法中:

  
form = MyForm(request.POST,request.FILES)
如果form.is_valid():
name = form.cleaned_data ['name']
for f in request.FILES.getlist('file'):
Docs.objects.create(name = name,file = f)
return HttpResponse('OK')
...


I want to upload and save multiple files in my application, I have
<input type="text" name="name" value="" />
<input type="file" name="file" multiple/>

in my template. when I hit upload, seems
form = MyForm(request.POST, request.FILES)
is only saving one file which is last in the list of the many uloaded files. How can I be able to save all the uploaded files using the form form = MyForm(request.POST, request.FILES) blah blah? Thanks

Edit
Myform is a model form from this model.

class Docs(models.Model):    
    name = models.CharField(max_length=128)
    file = models.FileField(max_length=100, upload_to="documents/")

解决方案

You maybe use request.FILES['file'] or request.FILE.get('file') in MyFOrm. They only return a file.

Use request.FILE.getlist('file') to get multiple files.


In your view:

....
form = MyForm(request.POST, request.FILES)
if form.is_valid():
    name = form.cleaned_data['name']
    for f in request.FILES.getlist('file'):
        Docs.objects.create(name=name, file=f)
    return HttpResponse('OK')
...

这篇关于在django中保存多个上传的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆