2016-02-09 22 views
6

Birden çok yaklaşımı denedim ve StkOvfl ve W3 Spesifikasyonları'nda çok fazla soru sordum ve yine de hiç bir fikrim yok.Ajax JS/PHP Resim Yükleyici çalışmıyor

Bir form girişi vardır:

benim Javascript ( prepareFormData yöntemi) Sonra
<input type="file" multiple accept="image/*" id="item-image-upload" > 

: [See full gist class here]:

var files = this.getFiles(); 
    var formData = new FormData(); 

    for (var i = 0; i < files.length; i++) { 

     var file = files[i]; 

     if (!file.type.match('image.*')) { 
      continue; 
     } 

     formData.append(this.uploadEntityName, file); 
    } 

zaman console.log(files), tüm dosyaları tüm ince olsun. Ancak, formData çalışmıyor. Ayrıca rasgele bir öğe ekledim:

Aldığım yanıt boş. Sunucu olarak php yaslanmak yapar: Emin şimdi sıra başlık olduğunu% 99, ve size günlüklerine veya PHP Uyarı açarsanız göreceksiniz ki

public function uploadImage(){ 
    return json_encode(array_merge($_REQUEST, $_FILES)); 
} 
+1

'formData.append ("Apple", 1)' da çalışmıyor mu? – user3581203

+0

@ user3581203, No. – tika

+0

Hmm, o zaman hiçbir fikrim yok. Gist'i sevdim. – user3581203

cevap

4

Warning: Missing boundary in multipart/form-data POST data in Unknown on line 0

Bu kopyalanan (ve başlık satırı eklendi ve giriş dosyası kaldırıldı) MDN gelen ve tüm hataları bağırmaya ayarlanır benim dev kutusunu bir senaryo üzerinde koştum ve boş bir diziye ardından bu hatayı aldık

var formData = new FormData(); 

formData.append("username", "Groucho"); 
formData.append("accountnum", 123456); // number 123456 is immediately converted to a string "123456" 

// JavaScript file-like object 
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file... 
var blob = new Blob([content], { type: "text/xml"}); 

formData.append("somefiles[]", blob); 

var request = new XMLHttpRequest(); 
request.open("POST", "MYDEVBOX/testpost.php"); 
// remove the line below and it works 
request.setRequestHeader("Content-Type", "multipart/form-data"); 
request.responseType = "json"; 
request.send(formData); 

Bir kaç dakika sonra t o nedenine bak. Çok parçalı verinin sınırları ile ilgisi var. XHR, xhr.send(formData) (veya yol boyunca bir yere) yaptığınızda, başlığı otomatik olarak eşleşen sınırla ayarlar. Bu üstbilgiyi ayarladığınızda, istek bunun yerine sınırı silerek ve PHP girdiyi nereye bölebileceğini bilmez. İşte daha iyi bir şekilde işaret eden hızlı bir ekran kapağı.

enter image description here

+0

Test edeyim. Yine de teşekkürler. – tika

+0

sadece biraz daha fazla, neden ağ panelinde içine kazdık sonra mükemmel anlamda yapılan bir kazma sonra bir düzenleme yaptı –

+0

Evet! Teşekkürler. Gerekli olmayan başlıkları yapıyordum. – tika