所以我创建了一个包含以下项目的表单
<input type="file" name="form_file" multiple/>
这告诉浏览器允许用户在浏览时选择多个文件。我遇到的问题是,当读/写正在上传的文件时,我只能看到最后一个文件,而不是所有文件。我很确定我以前见过这个,但没有运气搜索。这通常是我的阅读内容
if request.FILES:
filename = parent_id + str(random.randrange(0,100))
output_file = open(settings.PROJECT_PATH + "static/img/inventory/" + filename + ".jpg", "w")
output_file.write(request.FILES["form_file"].read())
output_file.close()
现在,你可以看到我没有循环遍历每个文件,因为我尝试了几种不同的方法,似乎无法找到其他文件(在对象等中)
我添加了print(request.FILES["form_file"])
并且只获得了最后的文件名,正如预期的那样。是否有一些技巧来获取其他文件?我是否坚持使用单个文件上传?谢谢!
答案 0 :(得分:6)
根据您的文件元素form_file
,request.FILES['form_file']
中的值应为文件列表。所以你可以这样做:
for upfile in request.FILES.getlist('form_file'):
filename = upfile.name
# instead of "filename" specify the full path and filename of your choice here
fd = open(filename, 'w')
fd.write(upfile['content'])
fd.close()
使用块:
for upfile in request.FILES.getlist('form_file'):
filename = upfile.name
fd = open(filename, 'w+') # or 'wb+' for binary file
for chunk in upfile.chunks():
fd.write(chunk)
fd.close()