Загрузка файлов DRF, Как решить проблему отсутствия файла?

400 Error

{"detail":"Missing filename. Request should include a Content-Disposition header with a filename parameter."}

Я хочу загрузить файл через DRF FileUploadParser Но возникает ошибка ниже

Bad Request: /api/activities/40/chapter/1/upload
[09/Nov/2021 16:44:33] "POST /api/activities/40/chapter/1/upload HTTP/1.1" 400 109

А мои коды в views.py об этой ошибке следующие.

class FileView(APIView):

    parser_classes = (FileUploadParser,)

    def post(self, request,  format=None, *args, **kwargs):

        if 'file' not in request.FILES:
            raise ParseError("Empty content")

        f = request.FILES.get('file')
        print(f)
        print(dir(request))
        print(request.__dict__)

        addAttr = request.data.dict()
        file_name = request.data['filename']
        
        new_file_full_name = file_upload_path(file_name.name)
        file_path = '/'.join(new_file_full_name.split('/')[0:-1])

        #model Attr
        addAttr['activityid'] = request.parser_context['kwargs']['pk']
        addAttr['chapterid'] = request.parser_context['kwargs']['chapterid']
        addAttr['filepath'] = file_path
        addAttr['filename'] = file_name
        addAttr['fileext'] = os.path.splitext(file_name.name)[1]
        addAttr['create_date'] = datetime.datetime.now()

        addAttrDict = QueryDict('', mutable=True)
        addAttrDict.update(addAttr)

        fileSerializer = ChapterfileSerializer(data = addAttrDict, files=request.FILES)
        if fileSerializer.is_valid():
            
            fileSerializer.save()       
            print(fileSerializer.data)
                    
            return Response(status=status.HTTP_201_CREATED)
        else:
            print(fileSerializer.errors)
            return Response(fileSerializer.errors, status=status.HTTP_400_BAD_REQUEST)

Если я добавляю параметр "filename", возникает ошибка 500.

TypeError: post() missing 1 required positional argument: 'parameter'
[09/Nov/2021 16:48:35] "POST /api/activities/40/chapter/1/upload HTTP/1.1" 500 86716

Страница ReactJS отправляет файл на мой Django API Server.

activityid и chapterid - это ID форума и поста. Итак, мне нужно, чтобы эти данные были вставлены в DB.

Как я могу решить эту проблему?

Вернуться на верх