POSTMAN -> DJANGO -- Загрузить бинарный файл (jpeg). Не могу заставить его работать независимо от того, что я делаю

для упрощения:

curl --location --request PUT 'https://myserver.com/upload' \
--form 'file=@/Users/myname/Desktop/bond.jpg' \
--form 'test=test'

Он попадает в мое приложение Django:

class MyUploadView(APIView):
    parser_classes = [FormParser, MultiPartParser]
    
    def put(self, request, **kwargs):
        print(request.FILES)  
  

но выдает: <MultiValueDict: {}>

у меня ничего не работает, файл всегда пустой. когда я использую Content-Type: multipart/form-data, это тоже не работает, и иногда django жаловался, что нет boundary -- но любое значение выдает ту же ошибку.

МОЯ ЦЕЛЬ ПРОСТА: все, что я хочу, это загрузить файл в django и сохранить его на диск в бэкэнде.

Я не могу поверить, что я трачу весь день с нулевыми результатами и ноль примерами онлайн, которые действительно работают.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
524
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не упоминаете, что разрабатываете REST API, но я предполагаю, что вы используете FormParser и MultiPartParser.

В примере в среде Django REST используется request.data['file'], а не request.FILES, как в вашем коде.

Попробуйте изменить метод на

def put(self, request, **kwargs):
    print(request.data['file'])

и посмотрите, получите ли вы какой-либо результат.

Чтобы сохранить загруженный файл, вы можете сделать это:

def put(self, request, **kwargs):
    uploaded_file = request.data['file']
    destination = open('/Users/Username/' + uploaded_file.name, 'wb+')
    for chunk in uploaded_file.chunks():
        destination.write(chunk)
    destination.close()
    return Response(uploaded_file.name, status.HTTP_201_CREATED)

Этот код заимствован из других сообщений на SO, таких как этот:

Загрузка файла Django Rest Framework

как сохранить файл на диск?

JasonGenX 15.12.2020 00:37

@JasonGenX - я добавил информацию о сохранении файла

Tony 15.12.2020 00:49

Другие вопросы по теме