Есть ли в django способ получить доступ к загруженным файлам при нескольких запросах?

Я создаю приложение, в котором пользователи могут загружать свои файлы и переходить на страницу оплаты. После завершения оплаты я хочу сохранить файлы, загруженные пользователем, в базе данных. Если пользователь не завершает оплату, то я не хочу сохранять файлы на сервере или в базе данных.

Есть ли способ сделать это?

Две вещи нужно распаковать здесь. Во-первых, не рекомендуется хранить файлы в базе данных. Лучше использовать хранилище или непосредственно файловую систему сервера.

Во-вторых, файлы обычно загружаются и сохраняются в соответствии с вашей стратегией (в файловой системе сервера, базе данных или стороннем хранилище), а затем происходит очистка, если пользователь не произвел оплату. Вам нужно определить условия, при которых произойдет очистка, будь то загрузка файла пользователем и его неактивность в течение определенного периода времени, или нажатие на определенную кнопку, или комбинация того и другого.

Чтобы запустить очистку, у вас есть разные возможности:

  • При загрузке файлов запланируйте задание, например, с помощью django-q, чтобы проверить, что, скажем, через 1 час после загрузки файлов, если оплата не была завершена, файлы будут удалены
  • .
  • Напишите команду django, которая запускается заданием cron каждый день и удаляет файлы пользователя, чей платеж не был завершен более 1 часа
  • .
  • Вы также можете работать с django-sessions и регулярно сканировать сессии, которые не были активны в течение 1 часа, чей платеж ожидается, и предполагать, что эти пользователи не будут продолжать платеж, и удалять их загруженные файлы
  • .
Вернуться на верх