2015-12-25 2 views
0

Я делаю простую страницу, где пользователь может загрузить изображение, не обновляя всю страницу. Но if(isset($_post[oneimgtxt])) не работает .. здесь мой ServerSide код, который загрузки изображения:Isset не работает с вызовом ajax

<?php 
$maxmum_size = 3145728; //3mb 
$image_type_allowed = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP); 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(isset($_POST["oneimgtxt"])){//<!------------------ this line is not working 
     if((!empty($_FILES[$_FILES['upimage']['tmp_name']])) && ($_FILES["upimage"]['error'] == 0)){ 
      $file=$_FILES['upimage']['tmp_name']; 
      $image_count = count($_FILES['upimage']['tmp_name']); 
      if($image_count == 1){ 
       $image_name = $_FILES["upimage"]["name"]; 
       $image_type = $_FILES["upimage"]["type"]; 
       $image_size = $_FILES["upimage"]["size"]; 
       $image_error = $_FILES["upimage"]["error"]; 
       if(file_exists($file)){//if file is uploaded on server in tmp folder (xampp) depends !! 
        $filetype =exif_imagetype($file); // 1st method to check if it is image, this read first binary data of image.. 
        if (in_array($filetype, $image_type_allowed)) { 
         // second method to check valid image 
         if(verifyImage($filename)){// verifyImage is function created in fucrenzione file.. using getimagesize 
          if($ImageSizes < $maxmum_size){//3mb 
           $usr_dir = "folder/". $image_name; 
           move_uploaded_file($file, $usr_dir); 
          }else{ 
           $error_container["1006"]=true; 
          } 
         }else{ 
          $error_container["1005"]=true; 
         } 
        }else{ 
         $error_container["1004"]=true; 
        } 
       }else{ 
        $error_container["1003"]=true; 
       } 
      }else{ 
       $error_container["1002"]=true; 
      } 
     }else{ 
      $error_container["1007"]=true; 
     } 
    }else{//this else of image issset isset($_POST["oneimgtxt"]) 
     $error_container["1001"]=true;//"Error during uploading image"; 
    } 
    echo json_encode($error_container); 
} 
?> 

в хроме инспектировать элемент я получил это .. image и это мой JS код с AJAX ...

$(".sndbtn").click(function(e){ 
     var form = $("#f12le")[0]; 
     var formdata = new FormData(form) 
     $.ajax({ 
      type:'POST', 
      //method:'post', 
      url: "pstrum/onphotx.php", 
      cache:false, 
      data: {oneimgtxt : formdata}, 
      processData: false, 
      contentType: false, 
      success:function (e){console.log(e);} 
     }); 
    }); 

Вот HTML код:

<form method="post" id="f12le" enctype="multipart/form-data"> 
    <input type="file" name="upimage"/> 
    <label for="imgr">Choose an Image..</label> 
    <textarea placeholder="Write something about photo"></textarea> 
    <input type="button" name="addimagedata" value="Post" class="sndbtn"/> 
</form> 

Спасибо за любую помощь.

+0

Добавьте это к вашему запросу ajax 'mimeType:" multipart/form-data ",' –

+0

Добавьте свою форму html также для лучшего решения вашей проблемы. –

ответ

1

Вы должны отправить FormData как объект данных, не являющийся частью другого объекта данных. Таким образом, это должно быть, как это -

$(".sndbtn").click(function(e){ 
    var form = $("#f12le")[0]; 
    var formdata = new FormData(form) 
    $.ajax({ 
     type:'POST', 
     //method:'post', 
     url: "pstrum/onphotx.php", 
     cache:false, 
     data: formdata, 
     processData: false, 
     contentType: false, 
     success:function (e){console.log(e);} 
    }); 
}); 

Теперь, вы должны быть в состоянии получить доступ к форме, как это. Например, если у вас есть ввод с именем inputxt внутри формы, вы должны иметь к нему доступ с $_POST['inputxt']. И если у вас есть input type="file" с именем upimage, вам необходимо получить доступ через $_FILES['upimage']. Итак, если вы хотите сделать isset() для этого. Вы можете сделать так:

if(isset($_FILES['upimage'])){ 
+0

hy i add html code Пожалуйста, скажите мне, что не так .. У меня нет имени withoneimgtxt –

+0

Сначала исправьте точку, о которой я упоминал в JS, и вам нужно получить доступ к загруженным файлам из '$ _FILES', а не' $ _POST'. –

+0

Как я могу разделить formdata на serveride после того, как я отправил ajax? должен ли я делать это, если (isset ($ _ post [inputfilename])) {}? –

0

добавить ENCTYPE по форме в любое время входа с помощью файла

<form enctype="multipart/form-data" > 
    <input type=file /> 
    ... 
    </form> 

и убедитесь, что это всегда запрос POST. Удачи ...!

0

я имел головную боль для этой вещи! вы должны использовать $_FILES['name_of_dom_element']; в своем php-коде.

+0

мне тоже .. я не могу голосовать, ребята, потому что нужно 15 рэп –

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