Django 多文件上传

标签 django

我有一个具有以下标题的表单:

<form enctype="multipart/form-data" target="invisible" action="/calendar/createEvent/" method="POST">

和以下正文:
<input class="multiFileInput" type="file" name="files" onchange="newInput();">
<input class="multiFileInput" type="file" name="files" onchange="newInput()">
<input class="multiFileInput" type="file" name="files" onchange="newInput()">

与许多其他输入一起,但文件上传是重要的。

这个表单被提交到我的 View 中,除了文件上传之外,所有的事情都是正确的。

当我在 View 中执行“print request.FILES”时,我得到:
<MultiValueDict: {u'files': [<TemporaryUploadedFile: boson.mp3 (audio/mpeg)>, <TemporaryUploadedFile: hadron.mp3 (audio/mpeg)>]}>

但是当我尝试对它们做更多事情时,它不会让我将它们用作文件。

例如,假设我有以下表格:
class File(models.Model):
    file = models.FileField(upload_to='files')

class Test(models.Model):
    name = models.CharField(max_length=10)
    files = models.ManyToManyField(File, related_name='files')

如果在我看来我说:
for f in request.FILES['files']:

    test = Test()
    test.name='test'
    test.save

    empt = File()
    empt.file = f
    empt.save()

    test.files.add(empt)

我得到以下异常:
DjangoUnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte. You passed in '\xff\xfb\xe0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Info\x00\x00\x00\x0f\x00\x00\x98C\x02m~\t\x00\x03\x05\x08\n'

另外,如果我尝试使用 f.chunks() 写入目的地,我会得到
AttributeError: 'str' object has no attribute 'chunks'

任何形式的帮助将不胜感激。我已经坚持了一段时间,希望得到一些帮助

最佳答案

您应该使用 getlist 访问多部分值,即:

for afile in request.FILES.getlist('files'):
    File(file=afile, files=test).save()

当您使用 request.FILES['files'] 时,我认为它不会将列表作为 python 列表获取。 .

另外,如果您想使用 HTML5 多文件上传而不是多文件形式,请查看此处:django form with multiple file fields

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

相关文章:

python - 修复应用级别允许的并发 session 数的方法。 Django

django - Apache 用户对 PostgreSQL 数据库的权限

具有大型相关表的 Django admin list_filter ForeignKey

django - 如何在管理中使用 contenttypes 自定义模型的显示?

python - 仅在特殊情况下才会出现 ValidationError [u'ManagementForm 数据丢失或已被篡改']

django - 如何将 django 中的管理页面与自定义身份验证后端连接?

python - Django模型的字段数小于对应的数据库表

django - 如何自定义Django中的默认身份验证系统?

php - 请建议一些替代 Drupal 的方法

django - TemplateDoesNotExist,registration/login.html Django