Ошибка загрузки изображения с MultiValueDictKeyError: DJANGO - PullRequest
0 голосов
/ 13 февраля 2019

Я звоню, чтобы загрузить изображение Api (Django rest api) с моей точки зрения в отдельном проекте Django

мой вид

  if request.method == 'POST' and request.FILES['file']:
        try:
            resp = requests.post(
                "http://19.******/BankImage_API",
                files = {"file" :request.FILES['file']},
                headers={"content-type": "multipart/form-data",
                         "Authorization": "Token 71117971*************"
                         }, verify=False)

Api

    class Bankimageapi(APIView):
        def post(self, request):
            if request.method == 'POST' and request.FILES['file']:
                try:
                   ........

, когда япопытался загрузить изображение.я получаю ошибку в API, где FILES <MultiValueDict: {}>.django.utils.datastructures.MultiValueDictKeyError: 'file' Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

По вашему мнению, полученный request.FILES['file'] является UploadedFile (см. документы здесь ), который является подклассом File.

Библиотека requests хочет, чтобы вы опубликовали двоичное содержимое файла.Вы можете получить доступ к содержимому файла, используя (file = request.FILES['file']):

  • read(): files={"file": file.read()}
  • file атрибут: files = {"file": file.file} хотя я неуверен, что это даст вам контроль над тем, является ли это двоичным файлом.

Более того, вы должны удалить заголовок "content-type", который автоматически добавляется пакетом requests.Похоже, это испортило тело вашего запроса.

0 голосов
/ 13 февраля 2019

Что такое id из input в html?

Обновление:

request.FILES - это диктовка, которая ссылается на объекты по их идентификатору в html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...