2012-01-06 2 views
0

Я хочу получить предварительный просмотр изображения перед загрузкой его в форму, в которой есть другое поле, например имя, возраст и т. Д. Я пробовал решение ajax. код работает отлично автономно. Но Когда я помещаю код в форму, он не работает. Plz помогите мне.Как просмотреть изображение в длинной форме

код выглядит следующим образом: автономного код для просмотра изображения с помощью Ajax

<form id="imageform" method="post" enctype="multipart/form-data" action='ajaximage.php'> 
Upload your image <input type="file" name="photoimg" id="photoimg" /> 
</form> 

и моей формы

<form name="iupload" action="index.php" method="post" > 
Name <input type="text" name="myname" ><br/> 
Age <input type="text" name="age" > 
<input type="file" name="photoimg" id="photoimg" /> 

<input type="submit" name="submit" value="upload"> 

<div id='preview'> 
</div> 

</form> 
+0

Вы обычно не нужно, потому что диалог файла выберите в браузере отображается эскиз и информацию о файле, уже. – hakre

+0

@hakre пользователю необходимо просмотреть предварительный просмотр загруженного изображения (аватар). –

+0

Вы не можете получить доступ к значению элемента '' с javascript. Это предотвращено по соображениям безопасности. Таким образом, вы ничего не можете создать здесь. Возможно, вы, возможно, ищете какой-то причудливый материал HTML5, но ваш вопрос не говорит об этом. – hakre

ответ

0

Я бы сказал, что вы можете отобразить локальное изображение перед загрузкой во всех браузерах, которые поддерживают File API, и старый версии IE (версия 7 и ниже).

Используя API файлов, вы можете получить локальное blob с помощью метода window.URL.createObjectURL. В IE8 beta добавлено дополнение «fakefile», чтобы скрыть локальный URL-адрес файла, чтобы устранить проблему безопасности, как описано here. Но в более старых версиях вы должны «использовать» это отверстие безопасности.

Что-то подобное может работать (fiddle):

$('form input[type=file]').change(function() { 
    var src; 
    if ('files' in this) { // File API supported (webkit/FF) 
     var obj = this.files[0]; 
     src = window.URL ? 
      window.URL.createObjectURL(obj) : 
      window.webkitURL.createObjectURL(obj); 
    } else { 
     if (/fake/.test(this.value)) { 
      // fallback to whatever (IE8, IE9) 
     } else { 
      src = this.value; // exploits the IE security hole 
     } 
    } 
    $(new Image()).attr('src',src).appendTo('body'); // the local image! 
}); 
1

Вы не можете просматривать локальные изображения в браузере. Браузер не имеет доступа к локальной файловой системе. Для этого вам нужны плагины Flash, Java или Active-X.

+0

, пожалуйста, дайте некоторую ссылку, я думаю, что мы сможем сделать это через ajax, php и js только –

+0

Если бы браузер мог получить доступ к локальной файловой системе, это было бы огромной дырой в безопасности. У нас были бы вредоносные страницы, крадущие наши файлы. –

+0

Это не так: http://www.w3.org/TR/FileAPI/ – David

Смежные вопросы