Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подгрузка изображения у клиента на JS
 
 автор: blackcement   (17.10.2010 в 13:04)   письмо автору
 
 

Здравствуйте. Возникла проблема:
Есть форма, в форме имеется пустое изображение и строка для выбора файла. После того как файл будет выбран, адрес картинки заполняется адресом выбранного файла у клиента. В браузере почему-то не срабатывает (а именно указывает неверный путь), но в 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

В чём дело? В инете полазил, почитал, говорят что из соображений безопасности... Что тут страшного? Я хочу юзеру показать его же картинку у него же на компе... Что предложите, люди добрые?

  Ответить  
 
 автор: sim5   (17.10.2010 в 14:39)   письмо автору
 
   для: blackcement   (17.10.2010 в 13:04)
 

А зачем вам путь клиента на сервере? Это именно из соображений безопасности, и на сервер можно передать вам путь клиента, но если только клиент отметит ваш сайт в браузере своем как доверенный.

  Ответить  
 
 автор: blackcement   (18.10.2010 в 13:58)   письмо автору
 
   для: sim5   (17.10.2010 в 14:39)
 

Просто хочу, чтобы пользователь перед тем как загрузить картинку на сервер, видел её в браузере после её выбора.

  Ответить  
 
 автор: sim5   (18.10.2010 в 14:11)   письмо автору
 
   для: blackcement   (18.10.2010 в 13:58)
 

Делайте, что вам мешает? Зачем для этого на сервер отправлять путь клиента? Он там совсем не нужен.

  Ответить  
 
 автор: blackcement   (18.10.2010 в 14:52)   письмо автору
 
   для: sim5   (18.10.2010 в 14:11)
 

Что-то я Вас не понимаю. Я бы с радостью не отправлял, а как иначе?
Я когда файл для загрузки выбираю, путь ведь сам прописывается...

  Ответить  
 
 автор: sim5   (18.10.2010 в 16:06)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: blackcement   (18.10.2010 в 17:49)   письмо автору
 
   для: sim5   (18.10.2010 в 16:06)
 

Создал отдельный ХТМЛ файл на сервере с Вашим кодом. Захожу на него, нажимаю обзор, выбираю картинку, нажимаю ОК... Картинки нет.

  Ответить  
 
 автор: sim5   (18.10.2010 в 18:02)   письмо автору
 
   для: blackcement   (18.10.2010 в 17:49)
 

А я нажимаю и есть. Кроме как в Safari.
Чтобы долго не говорить, земените onchange="document.getElementById('im').src=this.value" на onchange="alert(this.value)", помотрите код в IE, например. Затем отправьте это значение опять таки из под IE на сервер. Какой вы путь получите?

  Ответить  
 
 автор: АЯ   (18.10.2010 в 18:06)   письмо автору
 
   для: sim5   (18.10.2010 в 18:02)
 

"Чтобы долго не говорить", отмечу, что код Ваш РАБОТАЕТ.
Но работает он ТОЛЬКО тогда, когда исходный файл с этим кодом находится на Вашем локальном компьютере.

Как только этот файл Вы поместите на сервер - работать он перестанет.

  Ответить  
 
 автор: blackcement   (18.10.2010 в 18:20)   письмо автору
 
   для: АЯ   (18.10.2010 в 18:06)
 

Спасибо, что посоветуете?
Значит и размер картинки не узнать пока я её на сервак не загружу?
Flash работать будет таким образом или способ есть другой?

  Ответить  
 
 автор: АЯ   (18.10.2010 в 18:23)   письмо автору
 
   для: blackcement   (18.10.2010 в 18:20)
 

Да, пока картинку не загрузите - ничего ней не узнаете.

Flash - это совсем другая история.
В нём вполне можно организовать показ картинки, и, соответственно, легко можно узнать её размеры.

  Ответить  
 
 автор: sim5   (18.10.2010 в 19:09)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: sim5   (18.10.2010 в 18:21)   письмо автору
 
   для: АЯ   (18.10.2010 в 18:06)
 

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

  Ответить  
 
 автор: АЯ   (18.10.2010 в 18:26)   письмо автору
 
   для: sim5   (18.10.2010 в 18:21)
 

Насчёт "гнать путь на сервер" - это исключительно Ваша выдумка.
От невнимательности.

Перечитайте ВНИМАТЕЛЬНО стартовый топик.
Где Вы там увидели ХОТЬ ЧТО-ТО о сервере?
Там даже кнопки сабмит в форме нет.
Адрес картинки - С:/fakepath/1-web.jpg - он не с сервера, а с панели "Информация об изображении", которая формируется браузером при клике правой кнопки мыши по изображению.

  Ответить  
 
 автор: blackcement   (18.10.2010 в 18:41)   письмо автору
 
   для: АЯ   (18.10.2010 в 18:26)
 

Всем спасибо! Пойду стирать пыль с учебников по Флешу.

  Ответить  
 
 автор: sim5   (18.10.2010 в 19:21)   письмо автору
 
   для: АЯ   (18.10.2010 в 18:26)
 

Отсутствие кнопки submit в примере еще не говорит о том, что форму не хотят отправить, ибо речь шла о предпросмотре перед загрукой.
Ничего не выдумал, ибо именно на сервере нельзя получить путь из-за вопросов "безопасности", о чем автор и говорит, о чем ему кто-то сказал. А на локальном, так пожалуйста. Вот поэтому я и завел разговор о загрузке пути на сервер.
Ну а то, что где можно посмотреть адрес, так я в курсе этого ;-)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования