2016-04-11 33 views
1

Bunun çok sorulmuş olduğunu biliyorum .... ama karşılaştığım cevapların hiçbiri yardımcı olmuyor. Bu, daha önce defalarca yapılan bir şeydi ... ama bu vesileyle, bir problemle karşılaşıyorum.Jquery 1.10 ajax dosya yükleme formutav sorunu

Yalnızca bir alan formunu göndermeden ajax yoluyla bir zip dosyası yüklemeye çalışıyorum. Dosyayı formdata nesnesine ekliyorum ... ama formdata her zaman boş (ajax ile göndermeden önce kontrol ediyorum). $ _FILES dizi sunucu tarafı da her zaman boş.

Herkes neyin yanlış olduğunu görebilir mi, çok çeşitli varyasyonlar denedim ... Eğer i konsol.log (jQuery ("# ​​file_import") [0] .files [0]); Dosya verilerini görüyorum.

   var fileInput = jQuery("#file_import")[0]; 
       var formData = new FormData(); 
       formData.append("zipfile",fileInput.files[0]); 

       jQuery.ajax("/whatever/url", { 
        method: "POST", 
        data: formData, 
        dataType: "json", 
        cache: false, 
        contentType: false, 
        processData: false, 
        onSuccess: function(response){ 
         alert("whatever..."); 
        } 
       }); 

Şimdiden teşekkürler. Shaun

cevap

1

"Formdata her zaman boş" derken, formdata.entries()'u kullanarak mı kontrol ediyorsunuz, yoksa formData.get('zipfile') kullanıyor musunuz? Sanırım bunların sadece ikincisi işe yarayacak.

DÜZENLEME: işte tam kodum, istemci ve sunucu tarafı.

$(document).ready(function() { 

    $('#start').click(function() { 
     var fileInput = $("#file_import")[0]; 
     var formData = new FormData(); 
     formData.append("zipfile",fileInput.files[0]); 

     $.ajax("test.php",{ 
      method: "POST", 
      data: formData, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(response){ 
       $('#output').html(response); 
      } 
     }); 
    }); 


}); 

HTML:

<input type="file" id="file_import"/> 
<button id="start">Start</button> 
<div id="output"> 
</div> 

PHP:

<?php 

print_r($_FILES); 
$t = $_FILES['zipfile']; 

$date = new DateTime(); 
$d = $date->format('Y-m-d_H-i-s'); 

move_uploaded_file($t['tmp_name'], "asdf_$d.zip"); 

?> 
+0

Emin misiniz? Bu satırı çıkardım, firefox'ta test ettim, her zamanki tarayıcım ... ve $ _FILES hala sunucu tarafında boştu. Krom'a geçti ... ve aynısını alın :( –

+0

FormData.get ('zipfile') dosyasının dosya adını verdiğini doğrulayabilirim ... ama serveride $ _FILES hala boş. –

+0

Tüm kodumu gönderdim ... apache/php web sunucusu ile firefox/chrome üzerinde çalışıyor – David784