2016-02-25 107 views
1

我現在試着讓我的Ajax圖片上傳工作。 但可悲的是它不工作,我找不到原因。PHP Ajax圖片上傳bug

<script> 
    $(document).ready(function() { 

     $("#uploadBTN").click(function(event) { 
      event.preventDefault(); 
      var tmp_form = $("#fileinfo")[0]; 
      var fd = new FormData(tmp_form); 
      $.ajax({ 
       url: './ajax/image_post_upload.php', 
       type: 'POST', 
       data: fd, 
       async: true, 
       success:function(data){ 
        $('#output').html(data); 
       }, 
       cache: false, 
       contentType: false, 
       processData: false 
      }); 

     }); 

    }); 

</script> 

    <form id="fileinfo"> 
    <input id="fileinfo" name="userImage" type="file" class="file" /> 
    <div id="uploadBTN">SUBMIT</div> 
    </form> 

<div id=output>LOG HERE</div> 

image_post_upload.php

<?php 
if(isset($_FILES['file'])){ 
    $filename = $_FILES['file']['name']; 
    if(isset($_FILES['file']['name']) && !empty($filename)){   

     $target_dir = "./UPLOADS/"; 
     $target_file = $target_dir . basename($_FILES["file"]["name"]); 
     $uploadOk = 1; 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     // Check if image file is a actual image or fake image 
     if(isset($_POST["submit"])) { 
      $check = getimagesize($_FILES["file"]["tmp_name"]); 
      if($check !== false) { 
       echo "File is an image - " . $check["mime"] . "."; 
       $uploadOk = 1; 
      } else { 
       echo "File is not an image."; 
       $uploadOk = 0; 
      } 
     } 
     // Check if file already exists 
     if (file_exists($target_file)) { 
      echo "Sorry, file already exists."; 
      $uploadOk = 0; 
     } 
     // Check file size 
     if ($_FILES["file"]["size"] > 500000) { 
      echo "Sorry, your file is too large."; 
      $uploadOk = 0; 
     } 
     // Allow certain file formats 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
     && $imageFileType != "gif") { 
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
      $uploadOk = 0; 
     } 
     // Check if $uploadOk is set to 0 by an error 
     if ($uploadOk == 0) { 
      echo "Sorry, your file was not uploaded."; 
     // if everything is ok, try to upload file 
     } else { 
      $root = getcwd(); 
      if (move_uploaded_file($_FILES["file"]["tmp_name"], $root.$target_file)) { 
       echo "The file ". basename($_FILES["file"]["name"]). " has been uploaded."; 
      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 

    }else{ 
     echo 'please choose a file'; 
    } 
}else{ 
    echo 'not set'; 
} 
?> 

目前其每次說沒有設置? 我的腳本有什麼問題?

+0

你跟你的代碼獲得什麼樣的結果或錯誤信息的? –

+0

只有結果沒有從我的腳本中設置 – blackbat

+1

因此,當你調試時,什麼行看起來像是造成這個問題? –

回答

0

您的文件輸入的HTML name屬性與PHP $_FILES['file']不匹配,這就是爲什麼if(isset($_FILES['file']))返回false。

你可以通過改變你的HTML解決這個問題,以符合您的PHP:

<input id="fileinfo" name="file" type="file" class="file" /> 

希望幫助!

0

您的文件輸入名稱是userImage和你訪問它爲$_FILES['file']

所以使用任何一個代碼從下面兩項。

HTML:<input id="fileinfo" name="userImage" type="file" class="file" />

PHP:$_FILES['userImage']


HTML:<input id="fileinfo" name="file" type="file" class="file" />

PHP:$_FILES['file']