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>
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Доброго времени суток!
Делаю аплоадер с возможностью просмотра превьюшки картинки перед загрузкой на сервер. Во время дебага обнаружил, что огнелис показывает только путь к файлу в данном коде:
(сокращено для примера)
Полный путь к файлу нужен для того, чтобы показать превью выбранной картинки.
В гугле удалось выяснить только то, что это ввели в FireFox 3.0 и выше для безопасности.
Может, кому-то удалось это обойти? Будьте добры, поделитесь знаниями! Спасибо заранее.
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Создайте маленькую флешку в виде кнопки и открывайте изображение через флеш - будет вам полный доступ к расположению файла на диске. Метод довольно изящный и, кроме того, с помощью флеш есть возможность прикрутить и другие фишки.
vo1ty
Отправлено: 13 Июля, 2010 - 22:44:02
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Спасибо за ответ! К сожалению, у меня нет ни капли опыта работы с Flash.
К тому же, как я понимаю (а я могу ошибаться), в таком случае у пользователя должен быть установлен Flash player или что-то подобное для браузера. Хотя, конечно, сейчас это давно не проблема. Но все же я сам не могу так сделать. Хотелось бы найти решение проблемы, не прибегая к флеш.
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Во всех современных браузерах флэш по умолчанию отображается. Не надо ничего доустанавливать.
vo1ty
Отправлено: 14 Июля, 2010 - 00:15:43
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Тогда проблема, действительно, только в том, что я с Flash никогда не работал.
Uchkuma
Отправлено: 14 Июля, 2010 - 00:27:44
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Я тоже ноль во флэше. Можно ведь и заплатить специалисту, чтоб сделал, если уж за этим дело встало. Я так понял, что при выборе загружаемого файла, путь к нему должен заноситься в какую-то переменную javascript?
vo1ty
Отправлено: 14 Июля, 2010 - 01:16:17
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Uchkuma пишет:
Я так понял, что при выборе загружаемого файла, путь к нему должен заноситься в какую-то переменную javascript?
Можно и так, но заносить в переменную не совсем то, что нужно. Есть элемент <img>, которому после указывается SRC="путь_к_файлу". при этом можно ничего никуда больше не заносить.
Погуглил я тут еще раз, и нашел решение данной проблемы, правда, пока не смог сам воспроизвести.
Насколько я понял, вот так можно из <input type="file" id="upld"> после выбора картинки передать ее в <img id="prev">, только у меня в сей поздний час что-то не получилось это\.
Полный путь до файла все же никак не вытащить.
Хотя я нагуглил и способ вытянуть и путь к файлу. Только для этого нужно запросить данную привилегию у самого пользователя.
alert('Unable to access local files due to browser security settings.');
return;
}
var fileName=fileBrowser.value;
alert(fileName);
}
Функция запросит привилегию и, если пользователь разрешит, покажет путь к файлу. В качестве параметра функции нужно указать элемент input, из которого нужно вытянуть путь.
Еще я нагуглил, что такие сложности есть не только у FF. В IE, и то, возможно, не любой версии, value - read only, то есть получить можно, а установить - нет. Но это уже тема другая. А все современные браузеры с JS, по моему предположению, и этого делать не позволяют.
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
А может и шкурка выделки не стоит? А если пользователь выберет изображение большого разрешения, тогда что? Оно в дизайн уже может не вписаться.
vo1ty
Отправлено: 14 Июля, 2010 - 01:30:57
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2010
Помог: 0 раз(а)
Уже и не сомневаюсь, но, возможно, это все кому-нибудь еще пригодится.
JustUserR
Отправлено: 14 Июля, 2010 - 03:20:54
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
vo1ty пишет:
Полный путь к файлу нужен для того, чтобы показать превью выбранной картинки.
То есть вам нужно получить полный путь картинки выбранной пользователем в поле загрузки в форме и показать превью основываясь на локальном изображении - это получится не во всех браузерах с настройками безопасности по-умолчанию и вероятно придется обращаться к служебным JS-объектам браузера для получения запроса к пользователю на разрешение соответствующих действий
Тем не менее простая стилизация input-file-объекта используется достаточно широко - и описана например здесь http://vremenno[dot]net/design/file-inputs-styling/
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Uchkuma
Отправлено: 14 Июля, 2010 - 09:35:56
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
JustUserR пишет:
это получится не во всех браузерах с настройками безопасности по-умолчанию и вероятно придется обращаться к служебным JS-объектам браузера для получения запроса к пользователю на разрешение соответствующих действий
Отвечать на вопрос ответом, который уже был найден, только другими словами - как это в стиле JustUserR!
JustUserR
Отправлено: 14 Июля, 2010 - 23:16:59
Активный участник
Покинул форум
Сообщений всего: 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/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.