在Django中上载多个文件而不使用Django.forms

2024-03-29 10:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我创建了一个表单,其中包括

<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"])中添加了一个文件名,并且只得到了最后一个文件名。有什么办法可以查到其他文件吗?我是不是只能上传一个文件?谢谢!


Tags: 文件用户nameform表单inputoutput文件名
1条回答
网友
1楼 · 发布于 2024-03-29 10:39:26

基于文件元素form_filerequest.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()

相关问题 更多 >