2012-03-08 10 views
54

XMLHttpRequest kullanıldığında, dosya doğru olarak FormData kullanılarak yüklenir. Ancak, jQuery.ajax'a geçtiğimde kodum kırılıyor.jQuery.ajax ve FormData kullanılarak dosya yükleme

Bu çalışma özgün bir koddur: Burada

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

benim başarısız jQuery.ajax girişimi olduğu:

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

Neyi yanlış yapıyorum? AJAX kullanarak dosyanın doğru şekilde nasıl yüklenmesini sağlayabilirim?

cevap

155

processData:false,contentType:false yöntemini yönteminize eklemeniz gerekir, böylece jQuery üstbilgileri veya verileri değiştirmez (geçerli kodunuzu bozar).

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

Eğer yapabilseydim, bu 1000 kez üstesinden gelirdim. Bu soruya SO ile ilgili diğer tüm cevaplardan, bu en iyiyi çalıştı ve en basit olanı. Teşekkürler. – sqram

+6

Uyarı: FormData, sürüm 10'a kadar IE'de desteklenmemektedir. –

+6

Bu yanıtta (ve soru), 'blobFile' nedir? Bir input.val() mi? –