загрузка файла django rest framework с использованием данных json

#python-3.x #file-upload #django-rest-framework

#python-3.x #загрузка файла #django-rest-фреймворк

Вопрос:

Я определил свой сериализатор модели и fileview для загрузки файла с помощью api. Когда я тестирую свой API, загружая файл с помощью Postman, он работает хорошо, и файл сохраняется в папке мультимедиа. Но в моем API я передал детали в формате JSON (формат словаря). Теперь мой код не выбирает файл

 {
file:"C:usersadminDesktopabc.txt",
uploader :"akash"
}
 

Когда я пытаюсь сделать это с помощью Postman, имя файла и загрузчик сохраняются в базе данных, а файл сохраняется в папке мультимедиа, которую я определил в своем settings.py досье.

Мой вопрос заключается в том, как загрузить это, используя формат JSON в сообщении API.

Ответ №1:

Вы можете использовать этот фрагмент кода. Сработало для меня.

 import requests


def upload_file(file, url, token):
    files = {
        "file": file,
    }

    headers = {
        "Authorization": "Token "   token,
        "Content-Type": "multipart/form-data;boundary=---WebKitFormBoundaryyrV7KO0BoCBuDbTL"
    }

    response = requests.post(url, files=files, headers=headers)

    return response
 

В views.py:

 if form.is_valid():
    file = form.cleaned_data['file']

    response = upload_file(file, url, token)
 

Комментарии:

1. Как вы загружаете файл в api ..?? Есть ли у вас возможность просмотра для загрузки файла в api или вы загружаете файл, предоставляя поля в формате jason.

2. views.py представляет файл, извлекаемый из сериализатора… функция представляет, как загружать их через api

3. моя задача состоит в том, что у меня есть файл для загрузки вместе с несколькими другими полями, теперь имя файла и поля хранятся в БД, а файл хранится в папке media, то же самое успешно выполняется при тестировании с использованием postman. Но в моем api нет опции просмотра для выбора файла из локальной файловой системы, вместо этого у меня есть текстовое поле (куда я должен загружать содержимое json с полями) для публикации

4. { файл:»C:usersadminDesktopabc.txt «, загрузчик :»akash» } , Теперь, как API извлекает abc.txt файл из локального проводника для загрузки

5. Поскольку у вас есть rest api, это означает, что вы будете откуда-то отправлять post-запрос… Это может быть из ReactJS или мобильного приложения или любого другого… И для этих случаев у вас будет возможность просмотра и извлечения данных из формы или чего-то еще… вы получите эту информацию и отправите ее через api … разве не в этом весь смысл? Если это не так, возможно, я не понял вашу проблему или вы не смогли ее описать.