簡體   English   中英

在django中保存多個上傳的文件

[英]save multiple uploaded files in django

我想在我的應用程序中上傳和保存多個文件
<input type="text" name="name" value="" />
<input type="file" name="file" multiple/>

在我的模板中。 當我點擊上傳時,似乎
form = MyForm(request.POST, request.FILES)
只保存一個文件,它是許多已加載文件列表中的最后一個文件。 如何使用表單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/")

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

使用request.FILE.getlist('file')來獲取多個文件。


在你看來:

....
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')
...

@faksetru的答案不包括save()方法。 所以,如果你想保存你的實例,它看起來像這樣:

# in views.py
from .models import Docs
...
form = MyForm(request.POST, request.FILES)
if form.is_valid():
    name = form.cleaned_data['name']
    for f in request.FILES.getlist('file'):
        instance = Docs(name=name, file=f)
        instance.save()
    return HttpResponse('OK')

有關更多詳細信息,請參閱Django的官方文檔

更新:

在這里寫了一個完整的答案,請查看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM