У меня есть приложение django, куда я могу загружать файлы. Я показываю свои файлы в API. Вот так:
class FileCollection(models.Model):
name = models.CharField(max_length=120, null=True, blank=True)
store_file = models.FileField(upload_to=upload_file, null=True, blank=True)
creation_date = models.DateTimeField(null=True, blank=True)
class FileDownloadAPIListView(ListAPIView):
"""Lists all files.
"""
queryset = FileCollection.objects.all()
serializer_class = FileCollectionSerializer
Позже я буду реализовывать различные запросы для получения конкретных файлов.
Я бы хотел загрузить эти файлы из скрипта, используя python, без необходимости открывать браузер или что-то подобное. Я хочу сделать аутентифицированный вызов API с запросами, который получает мой файл и затем сохраняет его на локальном компьютере.
Проблема в том, что мои файлы должны быть приватными, и только авторизованные пользователи могут иметь возможность загружать их. Для других моих API я использую аутентификацию токена JWT.
Мой вопрос сейчас: как мне это реализовать? Должен ли я
a) Сохранять свои файлы в S3 и выполнять API-вызов по этому URL, чтобы как-то аутентифицировать меня с моими учетными данными AWS? б) Сохраните мои файлы где-нибудь в моей базе данных PostgrSQL и получите все оттуда с помощью аутентифицированного вызова API с использованием JWT. c) третий вариант, который я не рассматривал
Кроме того, если бы я использовал a, b или c, как я мог бы реализовать их?
вариант a) я подумал, что это может быть что-то вроде:
def get_file(method='get'):
headers = {
"Authorization": "JWT " + token
}
url = 'http://localhost:8000/linktomyawsstorage'
myfile = requests.get(url)
open('/somefolder', 'wb').write(myfile.content)
r = requests.request(method, ENDPOINT, headers=headers)
Но я не знаю, работает ли это, если мои файлы находятся в частном хранилище на AWS. Также я не знаю, так ли это нужно реализовывать.
Любые предложения, идеи, помощь или советы очень ценятся!
Заранее большое спасибо!