求教 django 如何实现多文件上传

2018-12-13 16:37:58 +08:00
 css3

实现了单文件上传,不会多文件上传,目前前端用一个 form 表单,进行多文件选择,但不太清楚,前端怎么获取选择的多 文件,并且改送给后端,请教一下各位,应该怎么实现多文件上传?

前端:

<div class="input-group">
  <form action="/manage/upload/" method="post" enctype="application/x-www-form-urlencoded" ><input id="file_upload" name="fileupload" accept="image/png, image/jpeg" multiple="multiple" type="file" value="" /><input id="file_upload" type="button" value="上传" onclick="FileUpload()"/>
</form>
</div>
//上传图像
            function FileUpload() {
                $("#prompt").hide();
                if ($("#file_upload").val() === ""){
                    $("#imgprompt").show();
                    return false;
                }
            $("#imgprompt").hide();
            $("#loading").show();
            var form_data = new FormData();
            var file_info =$('#file_upload')[0].files[0];
            form_data.append('file',file_info);
            console.log(form_data);
            $.ajax({
                url:'/manage/upload/',
                type:'POST',
                data: form_data,
                processData: false,
                contentType: false,
                success: function(callback) {
                    console.log('ok');
                     $("#loading").hide();
                    $("#prompt").show();
                }
            });
        }

后端:

def upload(request):
    if request.method == 'POST':
        file_obj = request.FILES.get('file')
        print("file_obj.name", file_obj, file_obj.name)
        f = open(os.path.join('upload', file_obj.name), 'wb')
        for chunk in file_obj.chunks():
            f.write(chunk)
        f.close()
        return HttpResponse('OK')
2394 次点击
所在节点    Python
3 条回复
Outliver0
2018-12-14 10:54:38 +08:00
request.FILES.getlist
careofzm
2018-12-14 11:17:47 +08:00
我是用 restframework, 大致上是这样实现的, 这不是上传图片, 希望对你有帮助

from rest_framework.parsers import FormParser, MultiPartParser
from rest_framework.response import Response
class MultipleFileSerializer(serializers.Serializer):
files = serializers.ListField(child=serializers.FileField())


class UserViewset(ModelViewSet):
serializer_class = UserSerializer
pagination_class = UserPagination
parser_classes = (FormParser, MultiPartParser)


def create(self, request, *args, **kwargs):
print(dir(request))
print(request.FILES)


text = request.FILES['file1'].read() + request.FILES['file2'].read()
return Response(text)


yim7
2018-12-17 09:59:27 +08:00
这有什么问题,多个文件就有多个 form 字段

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/517275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX