Django предварительно подписанные url загрузки файлов архитектура MVC
Я пытаюсь реализовать загрузку файлов с помощью предварительно подписанных URL, используя Django. У меня работает часть загрузки, однако я не уверен, как должна выглядеть архитектура для стандартного MVC-приложения.
Предположим, что эта модель:
class Document(models.Model):
file = models.FileField()
extra_field = models.CharField()
Отрисуйте GET-страницу с формой загрузки файла.
Пользователь изменяет
.<input type='file'>
и браузер делает запрос к/api/get-presigned-url
, который возвращает PUT URL для загрузки файлаБраузер загружает документ на PUT URL.
Эти 3 шага понятны. Следующие шаги совершенно непонятны, и я не уверен, как затем сохранить этот уже загруженный документ в моей Document
модели.
Если я отправляю форму с установленным полем File, файл загружается на стороне сервера, чего мы пытаемся избежать, используя URL с предварительной подписью.
Если я модифицирую форму так, чтобы она содержала file_url
и устанавливала предварительно подписанный PUT URL - это работает, но это небезопасно, поскольку пользователь может просто изменить имя файла и получить доступ к любому файлу в ведре.
Какова рекомендуемая архитектура для использования предварительно подписанных URL в стандартном шаблоне Django MVC с GET/POST запросами.