2016-09-16 64 views
0

我是新来的django,我试图从浏览器上传多个文件,并将它们存储在计算机存储的某个地方,但我没有用这段代码成功地存储它们,请帮我找到我的我可以做的错误或改进。预先感谢帮助。上传django中的多个文件

views.py

from django.shortcuts import render 
    from django.http import HttpResponse 
    # Create your views here. 

    def Form(request): 
     return render(request, "index/form.html", {}) 

    def Upload(request): 
     for count, x in enumerate(request.FILES.getlist("files")): 
      def process(f): 
       with open('/Users/benq/djangogirls/upload/media/file_' + str(count), 'wb+') as destination: 
        for chunk in f.chunks(): 
         destination.write(chunk) 
      process(x) 
     return HttpResponse("File(s) uploaded!") 

应用程序/ urls.py

from django.conf.urls import url 
from index import views 

urlpatterns = [ 
    url(r'^form/$', views.Form), 
    url(r'^upload/$', views.Upload) 
] 

form.html

<form method="post" action="../upload/" entype="multipart/form-data"> {% csrf_token %} 
<input type="file" name="files" multiple /> 
<input type="submit" value="Upload" /> 

+0

你的天堂”没有提到你的代码有什么问题,任何堆栈跟踪或意外行为都可以帮助调试它。 – SpiXel

+0

我没有收到任何文件在我的存储 –

+0

在我这里给出的计算机存储路径/ Users/benq/djangogirls/upload/media/ –

回答

2

我的模型来保存文档

class Document(models.Model): 
    file = models.FileField('Document', upload_to='mydocs/') 

    @property 
    def filename(self): 
    name = self.file.name.split("/")[1].replace('_',' ').replace('-',' ') 
    return name 
    def get_absolute_url(self): 
    return reverse('myapp:document-detail', kwargs={'pk': self.pk}) 

你可以尝试一个Django在我的代码创建视图我用这个DocumentCreateView

class DocumentCreate(CreateView): 
    model = Document 
    fields = ['file'] 

    def form_valid(self, form): 
    obj = form.save(commit=False) 
    if self.request.FILES: 
     for f in self.request.FILES.getlist('file'): 
      obj = self.model.objects.create(file=f) 

    return super(DocumentCreate, self).form_valid(form) 

我的HTML表单文件

<script> 
    $(document).ready(function(){ 
    $('#id_file').attr("multiple","true"); 

    }) 
</script> 
<form method="post" enctype="multipart/form-data" action="">{% csrf_token %} 
{{ form.file }} 
<input type="submit" value="upload" /> 

</form>