2016-04-11 7 views
1

Ich weiß, dass dies viel gefragt wurde .... aber keine der Antworten, die ich finde, helfen. Das ist etwas, das ich schon oft gemacht habe ... aber diesmal habe ich ein Problem.Jquery 1.10 Ajax-Datei Upload Formdata-Ausgabe

Ich versuche, eine Zip-Datei, über Ajax, ohne das Formular, nur das Feld hochladen. Ich füge die Datei an das formdata Objekt an ... aber die formdata ist immer leer (überprüfend, bevor ich über Ajax sende). $ _FILES Array-Server-Seite ist auch immer leer.

Kann jemand sehen, was falsch ist, ive viele Variationen ausprobiert ... Wenn ich console.log (jQuery ("# file_import") [0] .files [0]); Ich sehe die Dateidaten.

   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..."); 
        } 
       }); 

Vielen Dank im Voraus. Shaun

Antwort

1

Wenn Sie sagen, dass "die Formulardaten immer leer sind", versuchen Sie, es mit formdata.entries() zu überprüfen, oder verwenden Sie formData.get('zipfile')? Ich denke, nur der zweite wird funktionieren.

EDIT: hier ist meine genaue Code-, Client-und Server-Seite.

$(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

Sind Sie sicher? Ich habe diese Zeile entfernt, getestet in Firefox, meinem üblichen Browser ... und $ _FILES war immer noch leer Server-Seite. Switch to chrome ... und bekomme das gleiche :( –

+0

Ich kann bestätigen, dass formData.get ('zipfile') gibt mir den Dateinamen ... aber serverseite $ _FILES ist immer noch leer. –

+0

Just posted all my code ... arbeitet auf firefox/chrome, mit apache/php web server – David784