2012-03-20 14 views
5

Bazı dosya yükleme özelliklerini ajax isteği ile yapıyorum. Bir ajax çağrısında birden fazla dosya gönderebilmek istiyorum, bu yüzden FormData kullanmaya karar verdim.Chrome WebKitBlobBuilder veri ekleyemiyor

İkili veri dizgimi doğrudan FormData'ya eklemeyi denedim (ancak çalışır), ancak Content-Disposition'ın bir dosya adı özniteliği yok: Content-Disposition: form-data;

W3C ben bu niteliği olması (veya FormData.append() 3. özniteliği ile ayarlamak mümkün)

Ben formdata bir damla nesnesi eklemek gerektiğini söylüyor = "file1" adını

function uploadAsBinary() { 
    var xhr = new XMLHttpRequest(); 
    var fd = new FormData(); 

    window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; 
    var bb = new window.BlobBuilder(); 
    bb.append("this is my binary content"); 
    var blob = bb.getBlob("text/plain"); 

    fd.append("file1", blob, "file1"); 

    xhr.open("POST", "/mb/0/", false); 
    xhr.send(fd); 
} 

O firefox gayet de çalışır, ancak google chrome (v16 ve v17) ile, istek yükü içinde içeriği olmayan bir formdata geçerli::

------WebKitFormBoundaryVkgESMAGtmPMlPZ7 
Content-Disposition: form-data; name="file1"; filename="file1" 
Content-Type: text/plain 


------WebKitFormBoundaryVkgESMAGtmPMlPZ7-- 

aşağıdaki kodu yazdım Ayrıca blob'u bir ArrayBuffer ile doldurmaya çalıştım, aynı sonuç. Web'de 2 gün boyunca dolaşıyorum, cevap bulamadım. Android'de açık bir sorun buldum (http://code.google.com/p/android/issues/detail?id=22441) ama oldukça ölü görünüyor.

Bu bir gerçek krom sorunu mu? Birinin bunun hakkında bir ipucu var mı yoksa krom izleyici ile ilgili bir sorun mu açmalıyım?

Yardımlarınız için Thx!

window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || 
       window.MozBlobBuilder || window.MSBlobBuilder; 
window.URL = window.URL || window.webkitURL; 

var bb = new BlobBuilder(); 
bb.append('body { color: red; }'); 
var blob = bb.getBlob('text/css'); 

var link = document.createElement('link'); 
link.rel = 'stylesheet'; 
link.href = window.URL.createObjectURL(blob); 

document.body.appendChild(link); 

Blob():

burada bir çözüm arayan herkes için
+2

FYI: Chrome'a ​​bir sorun açtım: https://code.google.com/p/chromium/issues/detail?id=119254 – Sebastien

+0

Bu hala bir sorun gibi görünüyor, herhangi bir geçici çözüm var mı? – zfedoran

cevap