2014-09-26 8 views
-1

Я пытаюсь загрузить изображение без кнопки отправки. Мой код отлично работает для отправки без кнопки.Получить значение представленной формы без кнопки отправки

Мой HTML код

<form name="service_image_form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Add new image <input name="userfile" type="file" id="userfile" onchange="return subForm()" /> 
</form> 

<script> 
function subForm() { 
document.service_image_form.submit(); 
}; 
</script> 

Но я немного запутался в retriving данных на PHP. В php я попробовал что-то подобное, чтобы получить данные.

if (isset($_POST['service_image_form'])) 
{ 
echo "working"; 
} 

Здесь я пытаюсь эхо «работать» только для подтверждения. Если мое условие работает, тогда я могу сохранить свое изображение на сервере и db. Я знаю, что он очень прост, но на мгновение остановился. серфинга много ссылок, но не знаю. Пожалуйста, помогите мне с этим.

Я знаю, что если бы я имел кнопку отправки с именем = «Submit», то я могу retrive как этот

if(isset($_POST['submit'])) 
{ 
upload code comes here.. 
} 

, котор я не wan't кнопку отправить ..

+2

Удалить 'name =" service_image_form "' из вашего '

' и переименовать' name = "userfile" 'в' name = "service_image_form" '- вам также нужно будет добавить' enctype = "multipart/form-data" 'to'

+0

Thanq @ Fred-ii- ..made changes Работает отлично. Простая проблема, но смущенная. –

+0

Добро пожаловать Ракеш. –

ответ

2

Чтобы проверить, если запрос на запись сделан:

if($_SERVER['REQUEST_METHOD']=='POST'){ 
    echo "working"; 
} 

Обратите внимание, что загруженные файлы данных будут находиться в $_FILES суперглобальной, не $_POST, и как уже упоминалось, Фред, вам нужно будет добавить атрибут ENCTYPE на ваша форме

1

Вам нужно добавить атрибут ENCTYPE в вашу монете этого

<form name="myform" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Add new image <input name="userfile" type="file" id="userfile" onchange="return subForm()" /> 
</form> 

И в РНР вы получаете загруженные файлы с помощью $ _FILE

<?php 
if ($_FILES['userfile']['error'] > 0) { 
    echo $_FILES['userfile']['error']; 
} else { 
    echo 'Name: ' . $_FILES['userfile']['name']; 
    echo 'Temp file location in: ' . $_FILES['userfile']['tmp_name']; 
} 
?> 
+0

Спасибо, что заметили. Я забыл добавить enctype в свой вопрос. Мой код работает отлично сейчас .. Спасибо .. –

1

Так в основном вы пытаетесь проверьте правильность загрузки, правильно? Ну, это не то, как это делается.

PHP имеет большое руководство для этой http://php.net/manual/pl/features.file-upload.php

Вы пропустите:

  • правильной формы кодирования, добавьте атрибут ENCTYPE = "многослойную/форм-данных" в форму тега
  • файл будет помещенный в переменную $ _FILES ['userfile']
  • , вы можете проверить $ _FILES ['userfile'] ['error'], чтобы определить, была ли загрузка успешной (если это так, она будет равна постоянной UPLOAD_ERR_OK, 0)

После этого вы можете поехать, вы можете найти здесь все подробности http://php.net/manual/pl/features.file-upload.post-method.php это довольно просто.

+0

Спасибо за ссылку @Rafal Nowak .. Моя загрузка изображения уже работала нормально. Но я смутился, когда попытался загрузить без кнопки «Отправить». Потому что я всегда использую **, если (isset ($ _ POST (["submit"])) ** для получения отправленных значений. Теперь я понял концепцию $ _SERVER, и моя проблема решена. Спасибо за помощь. –

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