django - 在 Django 中上传多个文件

标签 django

我是 django 的新手,我试图从浏览器上传多个文件并将它们存储在计算机存储中的某个位置,但我没有使用此代码成功存储它们,请帮助我找出我的错误或我可以做的改进。提前感谢帮助。

View .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!")

app/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" />

最佳答案

我的模型来保存文档

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 创建 View ,我使用此 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>

关于django - 在 Django 中上传多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525188/

相关文章:

确认后未执行 Django 管理操作

python - 如何使用两个或多个列表进行查询集过滤?

python - 仅渲染 Django inline_formset 中的字段

django - 如何在 Django 的模板中显示站点的用户友好名称?

django - Django 模型中的密码字段?

python - AWS Elastic BeansTalk Django cronjob post 请求返回 403 错误

python - Django:检查模型字段是否得到回答

python - 如何在 Django 中为字典批量创建和保存对象

python - 在 django admin 中创建对象时如何自动插入当前用户?

Django - 如何引用静态文件的路径,我可以在模型中使用它们吗?