загрузить изображение от angular 7 до Django - PullRequest
0 голосов
/ 13 февраля 2020

мой пользовательский интерфейс angular 7 и бэкэнд Django. я хочу загрузить свое изображение в FileField в django бэкэнд:

это мой код API:

class UploadImage(APIView):
    parser_classes = (FileUploadParser,)
    renderer_classes = [JPEGRenderer]
    def put(self, request, filename, format=None):
        try:
            _u = request.user
            users = UserProfiles.objects.filter(user=_u)
            for g in users:
                g.picture = request.data['file']
                g.save()
            return response.Response({'status': 0, 'msg': 'upload successfully!'}, status=HTTP_200_OK)
        except Exception as e:
            print(e)
            return response.Response({}, status=HTTP_400_BAD_REQUEST)

и это мой JPEGRenderer:

from rest_framework.renderers import BaseRenderer


class JPEGRenderer(BaseRenderer):
    media_type = 'image/jpeg'
    format = 'jpg'
    charset = None
    render_style = 'binary'

    def render(self, data, media_type=None, renderer_context=None):
        return data

когда я отправляю свое изображение в бэкэнд, я принимаю 406 acceptable http error

мой запрос:

Request URL:api/user/upload_img/IMG_20181207_160953.jpg
Request method:PUT
Remote address:127.0.0.1:8000
Status code:
406
Version:HTTP/1.1
Referrer Policy:no-referrer-when-downgrade


заголовки запроса:

Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost:4200/
Authorization: Bearer eyJ0eXAiOiJFp
Content-type: image/jpeg
enctype: multipart/form-data
Content-Length: 255159
Origin: http://localhost:4200
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

и мое изображение находится в полезная нагрузка запроса

...