2015-12-01 24 views
0

我有像這樣一個簡單的PHP文件上傳腳本,圖像不保存,當我加入了Ajax代碼

<?php 

    $path = 'uploads/'; 
    $file_ext = array('jpg','png','gif','bmp','JPG'); 
    $post_ext = end(explode('.',$_FILES['photo']['name'])); 
    $photo_name = $_FILES['photo']['name']; 
    $photo_type = $_FILES['photo']['type']; 
    $photo_size = $_FILES['photo']['size']; 
    $photo_tmp = $_FILES['photo']['tmp_name']; 
    $photo_error= $_FILES['photo']['error']; 
    //move_uploaded_file($photo_tmp,"uploads/".$photo_name); 

    echo $photo_tmp; 

    if((($photo_type == 'image/jpeg') || ($photo_type == 'image/gif') || 
     ($photo_type == 'image/png') || ($photo_type == 'image/pjpeg')) && 
     ($photo_size < 2000000) && in_array($post_ext,$file_ext)) { 

     /* Understand in-Array !! */ 

     if($photo_error > 0){ 
      echo 'Error '.$photo_error; 
      exit; 
     }else{ 
      echo $photo_name.' Uploaded !'; 
     } 
     if(file_exists($path.$photo_name)){ 
      echo 'There is '.$photo_name; 
     }else{ 
      //new photo name and encryption 
      $new_name = explode('.',$photo_name); 
      $photo_name = 'erkan_'.md5($new_name[0]).'.'.$new_name[1]; 

      //move to directory 
      if(move_uploaded_file($photo_tmp,$path.$photo_name)){ 

       return $photo_name; 
      } 
     } 
    } 

?> 

表單代碼我的文件被保存完美的罰款,但是當我加入少許AJAX的組合,像這樣:

$(function(){ 
    $('button[type="submit"]').on('click' , function(e){ 
     e.preventDefault(); 
     var formData = new FormData(); 
     formData.append('photo', $('input[type=file]')[0].files[0]); 
     $.ajax({ 
      url: 'fileupload.php', 
      data: formData, 
      // THIS MUST BE DONE FOR FILE UPLOADING 
      contentType: false, 
      processData: false, 
      // ... Other options like success and etc 
     }); 
    }); 
}); 

現在,當我上傳圖片時,圖片未保存在我的上傳文件夾中,爲什麼?

+1

請同時顯示'

'。 –

+1

你會得到什麼錯誤?任何控制檯日誌? – rt2800

+1

@NanaPartykar完成! –

回答

1

你錯過了,type: "POST",在你<script></script>標籤。

$(function(){ 
    $('button[type="submit"]').on('click' , function(e){ 
     e.preventDefault(); 
     var formData = new FormData(); 
     formData.append('photo', $('input[type=file]')[0].files[0]); 
     $.ajax({ 
      type: "POST", 
      url: 'fileupload.php', 
      data: formData, 
      // THIS MUST BE DONE FOR FILE UPLOADING 
      contentType: false, 
      processData: false, 
      // ... Other options like success and etc 
     }); 
    }); 
}); 
+1

Jai Maharastra !! –

-2

我想你的文件名設置不正確。所以你的PHP無法獲得該文件。試試這個

formData.append('photo', $('input[type=file]')[0].files[0],$('input[type=file]')[0].files[0].name); 
+0

我絕對不想使用插件,這就是要點! –

+0

好吧我然後我認爲你的文件不會附加到'formdata'。我將編輯答案。 –

+0

這是正確的@哈利他不能,因爲他也沒有正確地參考表格。我重寫了ajax調用,並將其放在上面,這是我經常用於上傳的內容。希望這可以幫助! – Franco

1

你在ajax調用中有一些錯誤。

我給你的形式標識

2-你是不是從形式獲得的值。

$(function(){ 
    $('#submitBtn').on('click' , function(e){ 
     e.preventDefault(); 
      var form = $('form#myForm'); 

      var formdata = false; 

      if (window.FormData){ 
       formdata = new FormData(form[0]); 
      } 

      var formAction = form.attr('action'); 

      $.ajax({ 
       url: formAction, 
       data : formdata ? formdata : form.serialize(), 
       cache : false, 
       contentType : false, 
       processData : false, 
       dataType: "json", 
       type : 'POST', 
       resetForm: true, 
      }) 
      .done(function(data) { 
       //do something with the returned data 
      } 
    }); 
});