Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Полный путь к файлу: <input type=file>

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: FireFox 3.0 и выше
vo1ty
Отправлено: 13 Июля, 2010 - 20:00:51
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Доброго времени суток!
Делаю аплоадер с возможностью просмотра превьюшки картинки перед загрузкой на сервер. Во время дебага обнаружил, что огнелис показывает только путь к файлу в данном коде:
CODE (html):
скопировать код в буфер обмена
  1. <input type=file onchange="alert(this.value)">
(сокращено для примера)
Полный путь к файлу нужен для того, чтобы показать превью выбранной картинки.
В гугле удалось выяснить только то, что это ввели в FireFox 3.0 и выше для безопасности.
Может, кому-то удалось это обойти? Будьте добры, поделитесь знаниями! Спасибо заранее.

(Отредактировано автором: 13 Июля, 2010 - 20:03:03)

 
 Top
Uchkuma
Отправлено: 13 Июля, 2010 - 21:30:28
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Создайте маленькую флешку в виде кнопки и открывайте изображение через флеш - будет вам полный доступ к расположению файла на диске. Метод довольно изящный и, кроме того, с помощью флеш есть возможность прикрутить и другие фишки.
 
 Top
vo1ty
Отправлено: 13 Июля, 2010 - 22:44:02
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Спасибо за ответ! К сожалению, у меня нет ни капли опыта работы с Flash.
К тому же, как я понимаю (а я могу ошибаться), в таком случае у пользователя должен быть установлен Flash player или что-то подобное для браузера. Хотя, конечно, сейчас это давно не проблема. Но все же я сам не могу так сделать. Хотелось бы найти решение проблемы, не прибегая к флеш.

(Отредактировано автором: 13 Июля, 2010 - 22:46:13)

 
 Top
Uchkuma
Отправлено: 13 Июля, 2010 - 23:11:33
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Во всех современных браузерах флэш по умолчанию отображается. Не надо ничего доустанавливать.
 
 Top
vo1ty
Отправлено: 14 Июля, 2010 - 00:15:43
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Тогда проблема, действительно, только в том, что я с Flash никогда не работал.
 
 Top
Uchkuma
Отправлено: 14 Июля, 2010 - 00:27:44
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Я тоже ноль во флэше. Можно ведь и заплатить специалисту, чтоб сделал, если уж за этим дело встало. Я так понял, что при выборе загружаемого файла, путь к нему должен заноситься в какую-то переменную javascript?
 
 Top
vo1ty
Отправлено: 14 Июля, 2010 - 01:16:17
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Uchkuma пишет:
Я так понял, что при выборе загружаемого файла, путь к нему должен заноситься в какую-то переменную javascript?
Можно и так, но заносить в переменную не совсем то, что нужно. Есть элемент <img>, которому после указывается SRC="путь_к_файлу". при этом можно ничего никуда больше не заносить.
Погуглил я тут еще раз, и нашел решение данной проблемы, правда, пока не смог сам воспроизвести.
CODE (javascript):
скопировать код в буфер обмена
  1. var oImg = document.getElementById('prev');
  2. oImg.src = document
  3.     .getElementById('upld')
  4.     .files[0]
  5.     .getAsDataURL();
  6.  
Насколько я понял, вот так можно из <input type="file" id="upld"> после выбора картинки передать ее в <img id="prev">, только у меня в сей поздний час что-то не получилось это\.
Полный путь до файла все же никак не вытащить.
Хотя я нагуглил и способ вытянуть и путь к файлу. Только для этого нужно запросить данную привилегию у самого пользователя.
CODE (javascript):
скопировать код в буфер обмена
  1. function getPath(fileBrowser)
  2. {
  3.         try {
  4.                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  5.         } catch (e) {
  6.             alert('Unable to access local files due to browser security settings.');
  7.             return;
  8.         }
  9.         var fileName=fileBrowser.value;
  10.         alert(fileName);
  11. }
Функция запросит привилегию и, если пользователь разрешит, покажет путь к файлу. В качестве параметра функции нужно указать элемент input, из которого нужно вытянуть путь.
Еще я нагуглил, что такие сложности есть не только у FF. В IE, и то, возможно, не любой версии, value - read only, то есть получить можно, а установить - нет. Но это уже тема другая. А все современные браузеры с JS, по моему предположению, и этого делать не позволяют.

(Отредактировано автором: 14 Июля, 2010 - 01:29:29)

 
 Top
Uchkuma
Отправлено: 14 Июля, 2010 - 01:22:42
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




А может и шкурка выделки не стоит? А если пользователь выберет изображение большого разрешения, тогда что? Оно в дизайн уже может не вписаться.
 
 Top
vo1ty
Отправлено: 14 Июля, 2010 - 01:30:57
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Уже и не сомневаюсь, но, возможно, это все кому-нибудь еще пригодится.
 
 Top
JustUserR
Отправлено: 14 Июля, 2010 - 03:20:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vo1ty пишет:
Полный путь к файлу нужен для того, чтобы показать превью выбранной картинки.
То есть вам нужно получить полный путь картинки выбранной пользователем в поле загрузки в форме и показать превью основываясь на локальном изображении - это получится не во всех браузерах с настройками безопасности по-умолчанию и вероятно придется обращаться к служебным JS-объектам браузера для получения запроса к пользователю на разрешение соответствующих действий
Тем не менее простая стилизация input-file-объекта используется достаточно широко - и описана например здесь http://vremenno[dot]net/design/file-inputs-styling/


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Uchkuma
Отправлено: 14 Июля, 2010 - 09:35:56
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




JustUserR пишет:
это получится не во всех браузерах с настройками безопасности по-умолчанию и вероятно придется обращаться к служебным JS-объектам браузера для получения запроса к пользователю на разрешение соответствующих действий
Отвечать на вопрос ответом, который уже был найден, только другими словами - как это в стиле JustUserR! Радость
 
 Top
JustUserR
Отправлено: 14 Июля, 2010 - 23:16:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Uchkuma пишет:
А если пользователь выберет изображение большого разрешения, тогда что? Оно в дизайн уже может не вписаться
Всегда можно ограничить размер выводимого изображения собственными средствами масштабирования картинок в браузере - или сохранить его в div-слое с параметрами overflow:scroll для огранизации прокрутки для больших изображений Кроме того подобная опция позволяет узнавать размер и MIME-тип локального файла - поскольку можно обратиться к свойству через DOM-модель если поместить соответствующий объект в iframe-элемент
Uchkuma пишет:
Отвечать на вопрос ответом, который уже был найден, только другими словами - как это в стиле JustUserR!
К сожалению на форуме отсутствует одна замечательная опция - предупреждение о сообщениях других пользователей появившихся во время написания ответа
Что касается поддержки управления внутренними опциями безопасности через JS-скрипт в других браузерах - то она также имеется в виде объектов window.opera и window.chrome у соответствующих браузеров - а в Internet explorer такое проблемы вообще не стоит поскольку всегда можно попросить разрешение на подключение ActiveX-объекта который выполнит требуемую функциональность


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB