Django Rest框架中的多个文件上传

时间:2019-04-29 11:43:56

标签: python django django-rest-framework

我想使用DRF创建一个API,在这里我要上传两个文件,两个名称不同,文本字段为json字符串。下图显示了我的邮递员尝试使用该API。

enter image description here

请帮助我正确编写API。我在堆栈溢出中查找了几篇文章,但没有任何适当的解决方案。 根据输入,我没有任何模型,但我想创建一个独立的API,并希望在运行时处理这些文件和json。

2 个答案:

答案 0 :(得分:1)

简单的类似

import json
from rest_framework.decorators import api_view
from rest_framework.response import Response


@api_view(['POST'])
def foo(request):
    attributes = json.loads(request.data['attributes'])  # will be a 'dict'
    xsd_file = request.data['xsd_file']  # "InMemoryUploadFile" instance
    Iccs_file = request.data['Iccs_file']  # "InMemoryUploadFile" instance
    return Response("some response")

答案 1 :(得分:0)

我假设您正在编写基于类的视图。 这是您的view.py

class multipleFileUpload(APIView):

    def post(self, request):
    """

    :param request: 
    :return: 
    """
    try:
        #this will read attributes other than file
        str_value = request.POST["attributes"]
        print(str_value)

        #check if any file send in request if yes read all files one by one
        if len(request.FILES) != 0:
           for key in request.FILES:
               file_obj = request.FILES[key]
               print(file_obj.read()) #getting contents of the file in bytes
        return JsonResponse({"res": "got files"})
    except Exception as e:
        print(str(e))
        return JsonResponse({"res": "error"})

将此行添加到您的urls.py

  

url(r'uploadFiles / $',views.multipleFileUpload.as_view(),name ='uploadFiles'),

使用相同的参数运行邮递员,让我知道。