Подтвердить что ты не робот

Django-хранилища с Amazon S3 - предотвращение перезаписи

Я заметил, что django-хранилища (или, возможно, сам API-интерфейс Django) перезаписывают файлы с тем же именем. Это проблема для меня, так как мой сайт позволяет загружать пользователей, поэтому мне нужно убедиться, что файлы не перезаписываются.

В идеале я хотел бы передать имя файла на бэкэнд хранилища с уровня представления, но я изо всех сил стараюсь найти элегантный способ сделать это. Я был бы в равной степени счастлив, если бы там где-то был коммутатор, где я мог бы просто сделать что-то вроде overwrite=False и иметь бэкэнд при своем собственном альтернативном имени.

4b9b3361

Ответ 2

@Mark Lavin answer удачно указывает, что установка AWS_S3_FILE_OVERWRITE на False позволяет избежать этой проблемы.

Вы также можете немного улучшить интервал имен файлов. Вы можете сохранять файлы под любым именем на S3, которое вы хотите (это не обязательно должно быть имя файла, загруженного пользователем). Таким образом, вы можете сохранить ваш файл с именем "user_uploads/[user_id]/[user_generated_file_name]". Вы также можете установить имя файла, которое вы хотите, как часть загрузки. Если вы сохраняете имя загруженного пользователем файла в качестве поля в вашей модели, вы можете указать его в качестве имени файла в представлении, которое загружает файл.