Я создаю традиционное серверное приложение HTML (использующее Statamic поверх PHP), которое позволяет пользователям создавать идеи.Они посещают форму «Создать идею», заполняют некоторые вопросы и нажимают кнопку «Отправить».Как только они это сделают, форма отправляет запрос POST
на сервер, который затем сохраняет данные, генерируя идентификатор (и слаг) для идеи.
Теперь я хотел бы позволить пользователям загружать файлыкак часть их идеи.Конечно, старомодным способом сделать это было бы просто добавить в форму входные данные из файла, а затем сразу отправить все данные (данные и файлы).Сервер может создать идентификатор, а затем связать файлы с идентификатором.
Однако этот подход имеет некоторые недостатки, не в последнюю очередь из-за задержки с ожиданием загрузки файлов как части формы.процесс представления.Более современные реализации, как представляется, загружают файлы, как только они были добавлены (например, с помощью перетаскивания).Например, я определил FilePond в качестве лидера, иначе я бы, вероятно, использовал Dropzone.js .
Однако, если браузер отправляет файлы до того, как пользователь отправил форму, как я могу наилучшим образом связать файлы с данными формы?У меня еще нет идентификатора для использования.
Это должно быть решенной проблемой.Но я не смог найти лучшую практику через Google, отсюда и этот вопрос.Возможные решения, которые приходят мне в голову:
- Создайте GUID как часть формы.Отправить это с любой загрузки файла.Сохраните его (как скрытое поле) как часть данных формы, если и когда форма в конечном итоге будет отправлена.
- Требуйте, чтобы пользователь отправил форму (сохранить черновик), прежде чем разрешать загрузку файлов.Очевидно, что это не очень удобно для пользователя.
- Как вариант 2) выше, автоматически отправляйте форму через Ajax в какой-то момент, прежде чем пользователь начнет загружать файлы.
I'mсклоняясь к решению 1, но хотел понять, о чем я не думаю.2 не очень хорош из-за сбивающего с толку UX, и 3 кажется не совсем идеальным, например, потому что я мог бы закончить тем, что сохранил черновики идей, которые пользователь на самом деле никогда не спасает (и откажется), и отчасти потому, что генерируемый слаг может бытьна основе отсутствующего или неполного заголовка, поскольку пользователь, возможно, не заполнил поле заголовка до загрузки файлов.