Django多文件上传

Django多文件上传,django,Django,我有一个具有以下标题的表单: <form enctype="multipart/form-data" target="invisible" action="/calendar/createEvent/" method="POST"> 如果我认为我说: for f in request.FILES['files']: test = Test() test.name='test' test.save empt = File() empt.fi

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

<form enctype="multipart/form-data" target="invisible" action="/calendar/createEvent/" method="POST">
如果我认为我说:

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()写入目标,我会得到


任何形式的帮助都将不胜感激。我在这方面已经有一段时间了,希望能得到一些帮助

我以前没有做过这件事,但在保存之前,您似乎需要对实际的音频文件进行一些处理

总的结构将是:

if form.is_valid():
    object = form.save(commit=False)
    t = handle_uploaded_file(request.FILES['file'])
    object.field.save(t[0], t[1])
在handle\u upload\u文件中,您可能需要使用类似ffmpeg的东西来处理音频,然后
将(文件名、内容)
返回到主函数

此外,使用
.chunks
将在实际传递的文件上:

str=""
for c in request.FILES['file'].chunks(): 
   str += c

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

for afile in request.FILES.getlist('files'):
    File(file=afile, files=test).save()
我认为当您使用
request.FILES['FILES']
时,它不会将列表作为python列表


另外,如果您想使用HTML5多文件上传而不是许多文件表单,请看这里:

除了如其他文章中所指出的那样正确处理请求对象中的文件数组之外,您还应该确保在html输入中,您有一个设置为true的“multiple”属性。 例如:


<代码> <代码>请考虑将此添加/通知作为其他帖子的注释。提姆,我没有准备对其他帖子发表评论。
AttributeError: 'str' object has no attribute 'chunks'
if form.is_valid():
    object = form.save(commit=False)
    t = handle_uploaded_file(request.FILES['file'])
    object.field.save(t[0], t[1])
str=""
for c in request.FILES['file'].chunks(): 
   str += c
for afile in request.FILES.getlist('files'):
    File(file=afile, files=test).save()