загрузить - повторно отправить форму - прикрепить файлы - Symfony - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть в форме Symfony 1.4:

$this->setWidget('title', new sfWidgetFormInputText());
$this->setWidget('photo', new sfWidgetFormInputFile());

, если я отправлю эту форму, и он действителен, тогда покажите мне страницу с ошибкой.На входе TITLE находится предыдущий текст, который я ввел, но нет ссылки на прикрепленные файлы.Я должен снова найти этот файл и выбрать.Как я могу это исправить?

1 Ответ

2 голосов
/ 03 сентября 2011

Короче, ты не можешь.Это является признаком ввода файлов HTML.

Для ввода файла используется локальный путь к файлу на компьютере клиента (не на сервере), поэтому рассмотрим следующий (гипотетический) сценарий:

  1. Пользователь A загружает файл и сохраняет статью
  2. Пользователь B редактирует статью, и в поле ввода файла предварительно указывается путь к файлу, который был загружен пользователем A (но путь несуществует на компьютере пользователя B.)
  3. Пользователь B сохраняет, и файл не передается.

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

Вот почему вы не можетепредварительно заполните файл ввода в HTML.

В качестве альтернативы вы должны использовать sfWidgetFormInputFileEditable, который будет отображать ранее загруженное изображение вместе с вводом файла.Однако это будет отображаться только после того, как форма будет отправлена ​​и успешно сохранена .

...