FileUpload - где найти путь к картинке?

K
На сайте с 12.07.2006
Offline
295
Kpd
971

Есть обычная html-форма, в форме обычный <input type="file" name="foto">. Хочу сделать предварительный просмотр выбранной картинки с помощью DHTML

if (form.foto.value) {

var img = document.createElement("img");
img.src = form.foto.value;
...

Писал этот код три года назад под IE6, всё работало. Сейчас по FF3 и IE7 этот код отказывается работать, в foto.value доступно только имя файла, нет пути к файлу на жестком диске, поэтому картинка не отображается. Как можно обойти это ограничение?

stealthy
На сайте с 15.06.2006
Offline
69
#1

Закрутили гайки безопасности? Раньше только paste запрещался по умолчанию.

Ну, может быть повесить обработчик на поле onkeypress и onchange (правда там нужно будет обойти вопрос того что onchange сработает только после потери фокуса) и копировать вводимые символы в хидден поле или переменную, которую анализировать на полноту и тогда делать вызов preview. Проверять самому лень. Но если события будут отрабатываться то проблемы быть не должно.

Twilight CMS (http://www.twl.ru): есть Free версия, очень проста и удобна в использовании. Консультирую по любым вопросам. Новый спорт - практическая стрельба (http://nikit.in) - не для офисного планктона.
D
На сайте с 16.02.2008
Offline
11
#2

Помоему это бред, и я даже не представляю как такое могло работать даже в IE6.

Вы не имеете доступа к файловой системе клиента ..

Таким образом можно было бы сканить рабочий стол и тд и тп на что-нибудь интересненькое )

K
На сайте с 12.07.2006
Offline
295
Kpd
#3
stealthy:
Ну, может быть повесить обработчик на поле onkeypress

Вы видели юзеров. которые набирают адрес файла в поле file? :)

stealthy:
там нужно будет обойти вопрос того что onchange сработает только после потери фокуса)

Там обходить ничего не нужно, для file событие onchange срабатывает после того как юзер выбрал файл (кнопкой browse/обзор). Через это событие и работаю.

doggystyle:
Помоему это бред, и я даже не представляю как такое могло работать даже в IE6.

Работало и IE6.

doggystyle:
Вы не имеете доступа к файловой системе клиента ..

Не совсем так. Нельзя установить значение поля file, а прочитать значение этого поля через JavaScript раньше можно было без проблем, выдавался полный путь к файлу (в самом поле мы видим полный путь). Сейчас по .value выдается только имя файла, нет пути.

stealthy
На сайте с 15.06.2006
Offline
69
#4
Kpd:
Вы видели юзеров. которые набирают адрес файла в поле file?

Ну, тут я маху дал :). Просто в последнее время у меня много было подобных задач с обычными полями, потому у меня там всегда связки были onkeypress+onchange, ну я и...

Но если по onchange работает то уже дело.

Kpd:
Цитата:
Сообщение от doggystyle
Вы не имеете доступа к файловой системе клиента ..

Не совсем так. Нельзя установить значение поля file, а прочитать значение этого поля через JavaScript раньше можно было без проблем, выдавался полный путь к файлу (в самом поле мы видим полный путь). Сейчас по .value выдается только имя файла, нет пути.

Да он не об этом, а о том что путь то есть, только картинку по нему показать будет якобы нельзя. Насколько я понимаю, превьюшка локальная, doggystyle, то есть пользователь со своего винта будет выбирать файл и сразу видеть его в превью после выбора. Все прекрасно будет работать, не торопитесь называть это бредом. Другое дело что я не совсем понимаю зачем это нужно, поскольку если пользователь не знает какое содержимое картинки которую выбирает - он в Explorer включит режим просмотра тамбнейлов. А если знает - то показывать её после выбора будет правильно наверное только с точки зрения эстетики. А для удобства пользования это будет наверное не очень (лишняя информация). Хотя если форма длинная, или что-то типа анкеты с фотографией делается, чтобы типа визивига было... В общем нужно пробовать, такие неоднозначные вещи только экспериментально проверяются на предмет удобства.

K
На сайте с 12.07.2006
Offline
295
Kpd
#5
stealthy:
Насколько я понимаю, превьюшка локальная, doggystyle, то есть пользователь со своего винта будет выбирать файл и сразу видеть его в превью после выбора.

Совершенно верно.

stealthy:
Другое дело что я не совсем понимаю зачем это нужно

Для красоты.

stealthy:
Но нужно пробовать, такие сомнительные вещи только экспериментально проверяются.

Вот с этим проблема. Что-то навернули в безопасности браузеров, не работает старый скрипт без пути к картинке.

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий