#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 … разве не в этом весь смысл? Если это не так, возможно, я не понял вашу проблему или вы не смогли ее описать.