Django предварительно подписанные url загрузки файлов архитектура MVC

Я пытаюсь реализовать загрузку файлов с помощью предварительно подписанных URL, используя Django. У меня работает часть загрузки, однако я не уверен, как должна выглядеть архитектура для стандартного MVC-приложения.

Предположим, что эта модель:

    class Document(models.Model): 
       file = models.FileField()
       extra_field = models.CharField()


  1. Отрисуйте GET-страницу с формой загрузки файла.

  2. Пользователь изменяет <input type='file'> и браузер делает запрос к /api/get-presigned-url, который возвращает PUT URL для загрузки файла

    .
  3. Браузер загружает документ на PUT URL.

Эти 3 шага понятны. Следующие шаги совершенно непонятны, и я не уверен, как затем сохранить этот уже загруженный документ в моей Document модели.

Если я отправляю форму с установленным полем File, файл загружается на стороне сервера, чего мы пытаемся избежать, используя URL с предварительной подписью.

Если я модифицирую форму так, чтобы она содержала file_url и устанавливала предварительно подписанный PUT URL - это работает, но это небезопасно, поскольку пользователь может просто изменить имя файла и получить доступ к любому файлу в ведре.

Какова рекомендуемая архитектура для использования предварительно подписанных URL в стандартном шаблоне Django MVC с GET/POST запросами.

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