2015-03-27 7 views
5

मैं सफारी 5.1 के लिए XMLHTTRequest का उपयोग करके एक फ़ाइल अपलोड करना चाहता हूं और POST अनुरोध में पैरामीटर पास करना चाहता हूं। यह कैसे प्राप्त किया जा सकता है? यह किसी भी एपीआई के बिना सादे जावास्क्रिप्ट में होना चाहिए और मैं यह कर रहा हूं क्योंकि सफारी 5.1 संस्करण में FileReader का समर्थन नहीं करता है।XMLHttpRequest पैरामीटर के साथ फ़ाइल अपलोड करने के लिए

var fd = new FormData(); 
fd.append('file', $files[i]); 
var xhr = new XMLHttpRequest(); 
xhr.addEventListener("load", function(){alert("Done!");}, false); 
xhr.open("POST", url.getUrl('myurl')); 
xhr.send(fd); 

क्या कोड का उपरोक्त टुकड़ा सही है? मैं POST अनुरोध में पैरामीटर कैसे पास करूं?

+0

आप समस्या आप के बारे में थोड़ा और अधिक विवरण जोड़ सका हूँ? – abarisone

+0

'$ फाइल' क्या है? – Bergi

+0

आप अपनी फाइल कहां से प्राप्त करना चाहते हैं? – Bergi

उत्तर

0

if(window.FormData === undefined) or if(window.FormData !== undefined) आज़माएं।

अधिक संदर्भ के लिए

click here

आप भी इस एक कोशिश करनी चाहिए!

<script> 
    var client = new XMLHttpRequest(); 

    function upload() 
    { 
     var file = document.getElementById("uploadfile"); 

     /* Create a FormData instance */ 
     var fd = new FormData(); 
     /* Add the file */ 
     fd.append("upload", file.files[0]); 

     client.open("post",url.getUrl('myurl'), true); 
     client.setRequestHeader("Content-Type", "multipart/form-data"); 
     client.send(formData); /* Send to server */ 
    } 

    /* Check the response status */ 
    client.onreadystatechange = function() 
    { 
     if (client.readyState == 4 && client.status == 200) 
     { 
     alert(client.statusText); 
     } 
    } 
</script> 

FormData के रूप में, की क्षमता भेजने के लिए() एक, और अपलोड संपत्ति (और इसके onprogress घटना) कर रहे हैं XMLHttpRequest स्तर 2 का हिस्सा है, तो आप को देखने के लिए .upload के लिए परीक्षण कर सकते हैं अगर आप मिल गया है एक स्तर 2. मेरे पास मैक आसान नहीं है, लेकिन फ़ंक्शन (दुख की बात है, लेकिन सही ढंग से) ओपेरा 11.50 (और फ़ायरफ़ॉक्स 4 के लिए सच) के लिए झूठा रिटर्न देता है।

0

कोड अच्छा दिखता है। यदि आप POST को अतिरिक्त पैरामीटर पास करना चाहते हैं तो आपको उन्हें फॉर्मडाटा में जोड़ना होगा।

var fd = new FormData(); 
// here the POST parameters 
fd.append('parameter1', 'XXXX'); 
fd.append('parameter2', 'YYYY'); 
// The rest of your code 
fd.append('file', $files[i]); 
... 

संपादित करें: मैं नहीं यकीन है कि लेकिन यदि इस कार्यक्षमता सफारी 5.1 में समर्थित है

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