Как узнать полный путь к выбранному файлу из <input type="file" />

Есть элемент:

<input type="file" name="file" multiple="true" accept="image/jpeg,image/gif,image/x-png" id="file" value="Обзор" />

Мне необходимо сразу после выбора картинки отобразить её миниатюру (еще до загрузки).
Думал сделать нечто банальное:

getElementById('img').src = getElementById('file').value;
<img src="" id="img" />

Но браузеры либо ничего не подставляют, либо «C:\fakepath\имя_файла» либо вообще только имя_файла. Погуглив выяснил что это все из-за политики безопасности браузеров.
Посоветуйте какой-нибудь клиентский способ решения проблемы. В голову приходит только отправка файла ajax'ом обработчику для уменьшения и отдачи скрипту. Но хотелось бы не кушать трафик пользователей да и сервер нагружать лишний раз.
Может быть есть какой-нибудь другой способ решения проблемы? Может-быть с помощью клиентского Java?
Заранее спасибо!

UPD: вычитал что у Firefox и Chrome есть input.files[0].getAsDataURL(); Для других браузеров ничего похожего не найти? :)

UPD2: Пробовали с другом java-апплет сваять, оказывается их тоже ограничили в отличии от dexktop и server… Вроде бы только через хитрый нативный код на Си можно нарушить запреты :) Ито для этого дела нужно писать еще и библиотеки под разные платформы + подписать и сделать доверительными…
  • Вопрос задан
  • 22124 просмотра
Пригласить эксперта
Ответы на вопрос 7
norlin
@norlin
Через JS такое можно сделать, только если браузер поддерживает File API (часть HTML-5).
Ответ написан
Lux_In_Tenebris
@Lux_In_Tenebris
Flash (предпочтительнее) или Java
из браузеров исходный путь на клиентской системе палил на моей памяти разве что IE (но это ппц, конечно)
Ответ написан
@s0rr0w
При добавлении файла пройтись по всем именам файлов и создать для каждого из них img src=«file[i]» с иконочными размерами. Ничего на сервер даже не надо отсылать.
Ответ написан
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Флеш не вариант? Тот же загрузчик Вконтакте тумбочки показывает от фоток без загрузки на сервер.
Ответ написан
andrey_kl
@andrey_kl Автор вопроса
Пробовали с другом java-апплет сваять, оказывается их тоже ограничили в отличии от dexktop и server… Вроде бы только через хитрый нативный код на Си можно нарушить запреты :) Ито для этого дела нужно писать еще и библиотеки под разные платформы + подписать и сделать доверительными…
Ответ написан
theRavel
@theRavel
Погуглите ajax upload, идея в том, что файл будет загружен на сервер, и потом пользователю будет показана миниатюра этого файла уже с сервера. Так например работает загрузка аватара на facebook или google+. Все это можно реализовать на js (для IE6 возможны пляски, но все равно это реализуемо без костылей в виде flash, java и пр.)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы