2012-03-08 13 views
54

का उपयोग कर फ़ाइल अपलोड करने के लिए कैसे करें जब मैं XMLHttpRequest का उपयोग करता हूं, तो FormData का उपयोग करके फ़ाइल सही तरीके से अपलोड की जाती है। हालांकि, जब मैं jQuery.ajax पर स्विच करता हूं, तो मेरा कोड टूट जाता है।jQuery.ajax और FormData

यह काम कर मूल कोड है:

function uploadFile(blobFile, fileName) { 
    var fd = new FormData(); 
    fd.append("fileToUpload", blobFile); 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "upload.php", true); 
    xhr.send(fd); 
} 

यहाँ मेरी असफल jQuery.ajax प्रयास किया जाता है:

function uploadFile(blobFile, fileName) { 
    var fd = new FormData(); 
    fd.append("fileToUpload", blobFile); 
    var xm = $.ajax({ 
     url: "upload.php", 
     type: "POST", 
     data: fd, 
    }); 
} 

क्या मैं गलत कर रहा हूँ? AJAX का उपयोग करके, फ़ाइल को सही तरीके से अपलोड करने के लिए मैं कैसे प्राप्त कर सकता हूं?

उत्तर

155

आपको अपनी विधि में processData:false,contentType:false जोड़ना है, ताकि jQuery हेडर या डेटा (जो आपके वर्तमान कोड को तोड़ता है) को परिवर्तित नहीं करता है।

function uploadFile(blobFile, fileName) { 
    var fd = new FormData(); 
    fd.append("fileToUpload", blobFile); 

    $.ajax({ 
     url: "upload.php", 
     type: "POST", 
     data: fd, 
     processData: false, 
     contentType: false, 
     success: function(response) { 
      // .. do something 
     }, 
     error: function(jqXHR, textStatus, errorMessage) { 
      console.log(errorMessage); // Optional 
     } 
    }); 
} 
+4

यदि मैं कर सकता तो मैं इस 1000 बार ऊपर उठूंगा। SO पर इस प्रश्न के सभी अन्य उत्तरों में से, यह सबसे अच्छा काम करता है और सबसे सरल है। धन्यवाद। – sqram

+6

चेतावनी: FormData संस्करण 10 तक IE में समर्थित नहीं है। –

+6

इस उत्तर में (और प्रश्न), 'blobFile' क्या है? क्या यह एक इनपुट है .val()? –

संबंधित मुद्दे