Загрузка файлов с S3 на компьютер пользователя

У меня есть следующее представление в моем проекте Django

class download_mscore_software(APIView):
    def get(self, request):
        session = boto3.Session(
            aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
            aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY
        )
        s3 = session.resource('s3')

        clancy = s3.Bucket("magpie-bixly-test").download_file("Clancy-Gorillaz.jpg", "Clancy-Gorillaz.jpg")

Это работает для загрузки файла в каталог моего проекта. Однако мне нужно, чтобы файл загружался на компьютер пользователя. Как мне изменить это, чтобы это произошло? Я пробовал следующее:

clancy = s3.Bucket('magpie-bixly-test').download_file('Clancy-Gorillaz.jpg', 'Users/Downloads/Clancy-Gorillaz.jpg')

но я получаю ошибку, говорящую, что нет такого каталога. То же самое происходит, если я оставляю имя файла в конце вот так.

clancy = s3.Bucket('magpie-bixly-test').download_file('Clancy-Gorillaz.jpg', 'Users/Downloads')

Мое предположение заключается в том, что указанные пути относительны к вашему проекту и поэтому папка Users/Downloads не найдена. Вы можете попробовать указать абсолютный путь (Windows: C:/Users/<USERNAME>/Downloads/Clancy-Gorillaz.jpg или Linux: /home/<USERNAME>/Downloads/Clancy-Gorillaz.jpg). Где <USERNAME> следует заменить на пользователя ОС.

Даже если он работает, хорошей практикой является использование os.path для работы с конкретной ОС.

Вернуться на верх