12

में काम करता है मुझे AJAX का उपयोग करके फ़ाइलों को अपलोड करने की आवश्यकता है जिसे IE9 में समर्थित होना है। मैं फॉर्मडाटा का उपयोग कर रहा था जैसा कि here बताया गया है। मेरे कोड इस तरह दिखता है:AJAX का उपयोग करके फ़ाइलें/फ़ाइल अपलोड भेजना जो IE9

var files = new FormData(); 
JQuery.each($('#file')[0].files, function (i, file) { 
    files.append('file', file); 
}); 

$.ajax({ 
    type: "POST", 
    url: '/url', 
    cache: false, 
    contentType: false, 
    processData: false, 
    data: files, 
    ... 
}); 

यह सफारी और फ़ायरफ़ॉक्स में ठीक काम करता है, लेकिन IE9 में विफल रहता है के रूप में FormData IE9 में समर्थित नहीं है। मैं स्थापना करके एक फ़ाइल के रूप में बस भेजने की कोशिश की:

data: $('#file')[0].files[0] 
contentType: 'multipart/form-data' 

यह विफल रहता है के रूप में डेटा url- एन्कोडेड रूप में भेजा जाता और जावा पक्ष में पार्स नहीं किया जा सकता है। इसे हल करने के तरीके पर कोई मदद या सूचक बहुत सराहना की जाएगी। मुझे ऐसा कुछ चाहिए जो सभी ब्राउज़रों में काम करता हो।

संपादित करें: मुझे किसी भी अपलोड प्रगति पट्टी की आवश्यकता नहीं है क्योंकि फाइलें आम तौर पर छोटी होती हैं। मुझे एकाधिक फाइलें अपलोड करने की आवश्यकता नहीं है। मुझे बस एक फ़ाइल अपलोड की आवश्यकता है।

+1

मुझे यहां एक समान प्रश्न मिला: http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload –

+0

मैं फॉर्म '

'क्योंकि उपयोगकर्ता इनपुट के आधार पर कई क्रियाएं हो सकती हैं। तो मेरे पास अपलोड बटन पर 'क्लिक' एक्शन है, जो उपयोगकर्ता से प्राप्त इनपुट के प्रकार को निर्धारित करता है और तदनुसार रीडायरेक्ट करता है। हमारे पास पहले यह था और यह काम कर रहा था, लेकिन अब उपयोगकर्ता इनपुट के आधार पर विभिन्न यूआरएल/फ़ंक्शन पर रीडायरेक्ट करने की आवश्यकता बदल गई। – Alice

उत्तर

17

दुर्भाग्य से आप फ़ाइलों को भेजने के लिए अजाक्स (दूसरे शब्दों में XMLHttpRequest) का उपयोग नहीं कर सकते हैं, लेकिन आप एक समान व्यवहार एक <form method="post" enctype="multipart/form-data"/> कि एक <input type="file"/> जो "प्राकृतिक" जिस तरह से उपयोग कर एक उपयोगकर्ता चुना फ़ाइल भेजता शामिल साथ <iframe/> का उपयोग कर लागू कर सकते हैं। आप form.submit() पर कॉल करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं, फिर यह जांचने के लिए कि फ़ाइल अपलोड प्रक्रिया पूरी की गई है या नहीं, यह जांचने के लिए कि <iframe/> मूल दस्तावेज़ से मतदान करें।

jQuery में इस काम को पूरा करने के लिए a lot of cool plugins है, उदाहरण के लिए my favorite one है।

+2

यह उत्तर भी उपयोगी दिखता है: http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery?lq=1 –

+1

धन्यवाद Danijar। यह मेरी समस्या हल हो गई। आईई 10 – Alice

+0

के लिए तत्पर हैं आप ब्लॉब डेटा का उपयोग कर सर्वर पर एक फाइल भेज सकते हैं। –