#php #forms #cakephp
#php #формы #cakephp
Вопрос:
Я пишу веб-приложение, используя CakePHP. Теперь с помощью cake после сбоя сохранения и перенаправления обратно на экран добавления или редактирования вставленные данные возвращаются в поля формы для редактирования пользователем. Это именно то, чего я хочу, проблема в том, что поле загрузки файла не сохраняется. Есть ли способ сохранить путь к полю формы ввода файла, когда пользователь выбрал изображение для загрузки?
Спасибо
Ответ №1:
Современные браузеры будут запутывать значение входного файла, чтобы скрыть информацию о файловой системе клиента. Это включает в себя доступ к входному значению через javascript, где браузеры вернут что-то вроде C:fakepathfile.txt
.
Установка значения входных файлов также обычно не допускается, ни путем установки value
атрибута в HTML, ни через javascript. Таким образом, вы не смогли бы восстановить предыдущее значение поля ввода, даже если бы вы могли каким-то образом узнать, что это было. Попробуйте сами здесь:
(Есть некоторые исключения из некоторых из этих ограничений, например, более ранние версии IE, но я полагаю, что это вам не поможет.)
Поскольку путь пользователя не отправляется как часть данных формы, он не будет доступен в PHP.
Решением в вашем случае может быть сохранение загруженного файла на сервере. При возникновении ошибки сохранения передайте соответствующую ссылку на временный файл обратно в форму (например, через данные сеанса) и позвольте пользователю выбрать, сохранить ли исходный файл или выбрать новый для загрузки, пока они исправляют другие части формы.
Ответ №2:
Вы можете, но я не думаю, что это хорошая идея: если пользователь не отвечает в течение некоторого времени и время ожидания сеанса истекло, файл, вероятно, будет удален. Вы должны создать загружаемый файл в отдельной форме (на отдельной странице) или вручную управлять своим собственным процессом загрузки.