|
|
|
| Здравствуйте. Возникла проблема:
Есть форма, в форме имеется пустое изображение и строка для выбора файла. После того как файл будет выбран, адрес картинки заполняется адресом выбранного файла у клиента. В браузере почему-то не срабатывает (а именно указывает неверный путь), но в Adobe GoLive CS (html редактор) всё нормально получается .
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-16">
<script>
function myFunc ()
{
var s = document.getElementById ("img").value;
document.getElementById ("kartinka").src = s;
}
</script>
</head>
<body>
<form action="" method="get" >
<img ID="kartinka" src="">
<input onchange="myFunc()" type=file ID="img" name=uploadfile size="5">
</form>
<body>
</html>
|
Если выберем картинку по адресу
C:\1-web.jpg
То браузер показывает картинку по адресу
С:/fakepath/1-web.jpg
В чём дело? В инете полазил, почитал, говорят что из соображений безопасности... Что тут страшного? Я хочу юзеру показать его же картинку у него же на компе... Что предложите, люди добрые? | |
|
|
|
|
|
|
|
для: blackcement
(17.10.2010 в 13:04)
| | А зачем вам путь клиента на сервере? Это именно из соображений безопасности, и на сервер можно передать вам путь клиента, но если только клиент отметит ваш сайт в браузере своем как доверенный. | |
|
|
|
|
|
|
|
для: sim5
(17.10.2010 в 14:39)
| | Просто хочу, чтобы пользователь перед тем как загрузить картинку на сервер, видел её в браузере после её выбора. | |
|
|
|
|
|
|
|
для: blackcement
(18.10.2010 в 13:58)
| | Делайте, что вам мешает? Зачем для этого на сервер отправлять путь клиента? Он там совсем не нужен. | |
|
|
|
|
|
|
|
для: sim5
(18.10.2010 в 14:11)
| | Что-то я Вас не понимаю. Я бы с радостью не отправлял, а как иначе?
Я когда файл для загрузки выбираю, путь ведь сам прописывается... | |
|
|
|
|
|
|
|
для: blackcement
(18.10.2010 в 14:52)
| | А вы отправьте еще и посмотрите, что получите. Кроеме имени файла ничего, а что все полностью получить см. выше. Вы же на клиенте просмотр устраиваете, перед загрузкой, вот этот путь изображению и подставляйте.
<img src="" id="im">
<form action="" enctype="multipart/form-data">
<input type="file" name="fl" onchange="document.getElementById('im').src=this.value">
</form>
|
| |
|
|
|
|
|
|
|
для: sim5
(18.10.2010 в 16:06)
| | Создал отдельный ХТМЛ файл на сервере с Вашим кодом. Захожу на него, нажимаю обзор, выбираю картинку, нажимаю ОК... Картинки нет. | |
|
|
|
|
|
|
|
для: blackcement
(18.10.2010 в 17:49)
| | А я нажимаю и есть. Кроме как в Safari.
Чтобы долго не говорить, земените onchange="document.getElementById('im').src=this.value" на onchange="alert(this.value)", помотрите код в IE, например. Затем отправьте это значение опять таки из под IE на сервер. Какой вы путь получите? | |
|
|
|
|
|
|
|
для: sim5
(18.10.2010 в 18:02)
| | "Чтобы долго не говорить", отмечу, что код Ваш РАБОТАЕТ.
Но работает он ТОЛЬКО тогда, когда исходный файл с этим кодом находится на Вашем локальном компьютере.
Как только этот файл Вы поместите на сервер - работать он перестанет. | |
|
|
|
|
|
|
|
для: АЯ
(18.10.2010 в 18:06)
| | Спасибо, что посоветуете?
Значит и размер картинки не узнать пока я её на сервак не загружу?
Flash работать будет таким образом или способ есть другой? | |
|
|
|
|
|
|
|
для: blackcement
(18.10.2010 в 18:20)
| | Да, пока картинку не загрузите - ничего ней не узнаете.
Flash - это совсем другая история.
В нём вполне можно организовать показ картинки, и, соответственно, легко можно узнать её размеры. | |
|
|
|
|
|
|
|
для: blackcement
(18.10.2010 в 18:20)
| |
<script>
function imgVal(s) {
var im = document.getElementById('im');
var ims = new Image();
im.src = ims.src = s;
ims.onload = function() {
document.getElementById('res').innerHTML = ims.width + "x" + ims.height;
}
}
</script>
<img src="" id="im">
<div id="res"></div>
<form action="" enctype="multipart/form-data">
<input type="file" name="fl" onchange="imgVal(this.value)">
</form>
|
| |
|
|
|
|
|
|
|
для: АЯ
(18.10.2010 в 18:06)
| | Так о чем и речь. )
Он хочет сделать предпросмотр выбранного пользователем изображения, то есть до отправки на сервер. Зачем в этом случае гнать путь на сервер, его там не получить без определенных условий все равно, и файл уже закачан будет, о каком предпросмотре в таком случае может идти речь. | |
|
|
|
|
|
|
|
для: sim5
(18.10.2010 в 18:21)
| | Насчёт "гнать путь на сервер" - это исключительно Ваша выдумка.
От невнимательности.
Перечитайте ВНИМАТЕЛЬНО стартовый топик.
Где Вы там увидели ХОТЬ ЧТО-ТО о сервере?
Там даже кнопки сабмит в форме нет.
Адрес картинки - С:/fakepath/1-web.jpg - он не с сервера, а с панели "Информация об изображении", которая формируется браузером при клике правой кнопки мыши по изображению. | |
|
|
|
|
|
|
|
для: АЯ
(18.10.2010 в 18:26)
| | Всем спасибо! Пойду стирать пыль с учебников по Флешу. | |
|
|
|
|
|
|
|
для: АЯ
(18.10.2010 в 18:26)
| | Отсутствие кнопки submit в примере еще не говорит о том, что форму не хотят отправить, ибо речь шла о предпросмотре перед загрукой.
Ничего не выдумал, ибо именно на сервере нельзя получить путь из-за вопросов "безопасности", о чем автор и говорит, о чем ему кто-то сказал. А на локальном, так пожалуйста. Вот поэтому я и завел разговор о загрузке пути на сервер.
Ну а то, что где можно посмотреть адрес, так я в курсе этого ;-) | |
|
|
|