2012-03-02 15 views
38

मैं AJAX फ़ाइल अपलोड करने के लिए plupload का उपयोग कर रहा हूं। अब plupload.Uploader क्लास में कई विकल्प हैं लेकिन कोई भी अतिरिक्त डेटा नहीं है।PLupload का उपयोग कर अतिरिक्त डेटा कैसे भेजें?

उदाहरण के लिए:

var uploader = new plupload.Uploader({ 
    runtimes : 'gears,html5,flash,silverlight,browserplus', 
    browse_button : 'pickfiles', 
    container : 'contact_container', 
    max_file_size : '10mb', 
    url : 'upload.php', 
    flash_swf_url : '/plupload/js/plupload.flash.swf', 
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap', 
    filters : [ 
     {title : "Image files", extensions : "jpg,gif,png"}, 
     {title : "Zip files", extensions : "zip"} 
    ], 
    resize : {width : 320, height : 240, quality : 90} 
}); 

क्या मैं हासिल करने के लिए कोशिश कर रहा हूँ मैं जहां सभी अपलोड सहेजा जा रहा है अपने सर्वर में एक फ़ोल्डर है। मैं फ़ोल्डर में अंदर से प्रत्येक उपयोगकर्ता को उप-फ़ोल्डर बनाने के लिए तैयार करता हूं जिसने वहां फाइलें अपलोड की हैं। मैं plupload.Uploader के उदाहरण के लिए उपयोगकर्ता की आईडी जैसे डेटा कैसे जोड़ सकता हूं? या यदि मैं कंटेनर div के अंदर एक फॉर्म लपेटूंगा, तो क्या मैं इसे $ _REQUEST में देख पाऊंगा? या क्या कोई और तरीका है जिससे मैं इसे प्राप्त कर सकता हूं?

उत्तर

71

क्या आपने multipart_params के लिए सेटिंग का उपयोग करने का प्रयास किया है? इसलिए की तरह अपने plupload.Uploader के लिए एक अतिरिक्त विकल्प जोड़ें:

var uploader = new plupload.Uploader({ 
    runtimes : 'gears,html5,flash,silverlight,browserplus', 
    browse_button : 'pickfiles', 
    container : 'contact_container', 
    max_file_size : '10mb', 
    url : 'upload.php', 
    flash_swf_url : '/plupload/js/plupload.flash.swf', 
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap', 
    filters : [ 
     {title : "Image files", extensions : "jpg,gif,png"}, 
     {title : "Zip files", extensions : "zip"} 
    ], 
    resize : {width : 320, height : 240, quality : 90}, 
    multipart_params : { 
     "name1" : "value1", 
     "name2" : "value2" 
    } 
}); 

फिर आप जिस फ़ाइल को अपलोड (डिफ़ॉल्ट रूप से upload.php) संभालती में मूल्यों पर कार्रवाई करने की आवश्यकता होगी। मुझे लगता है कि मान $_POST द्वारा कैप्चर किए जाते हैं लेकिन आप सुनिश्चित करने के लिए $_REQUEST का उपयोग कर सकते हैं।

मैंने फ्लाई पर मान निर्दिष्ट करने के लिए jQuery का उपयोग किया है, इसलिए "name1" : "value1" के बजाय आप "name1" : $("#name1").val(), जैसे कुछ का उपयोग कर सकते हैं जहां # name1 पृष्ठ पर कहीं और इनपुट हो सकता है।

प्लूपलोड का दस्तावेज इन सेटिंग्स में से कुछ के लिए थोड़ा सा स्पैस है।

+3

विशाल मदद के लिए धन्यवाद! – liveandream

+22

मेरे लिए "फ्लाई पर" किसी ईवेंट के दौरान (और अपलोडर.स्टार्ट() 'से पहले), मैंने' uploader.settings.multipart_params ["name1"] = calcValue() 'सेट किया है। – Jonno

+0

कतार में पैराम स्टोर करने पर अच्छा लेख। http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

आप उपयोग कर सकते हैं uploader.settings.multipart_params["name1"] = yourValue; लेकिन "name1" अपलोड करने वाले config में घोषित किया जाना चाहिए:

multipart_params : { 
    "name1" : "value1", 
    "name2" : "value2" 
} 
+0

अच्छी तरह से किया। पहले अपलोड करने और क्वेरी फॉर्म मानों को सुनने में सक्षम होने के लिए उन्हें पहले घोषित mulitpart_params से संलग्न करें। मैंने इस विधि की पुष्टि की है और अच्छी तरह से काम करता है। –

2

तुम भी

uploader.settings.url = "upload.php?param1=whatever" 

उपयोग कर सकते हैं और सिर्फ एक चर के रूप में इसे पारित।

2

आप ऐसा कर सकते हैं, जिसे आप अपलोड गतिशील हर फ़ाइल पर पैरामीटर जोड़ने के लिए की जरूरत है:

uploader.bind('BeforeUpload', function(up, file) { 
    up.settings.multipart_params = { 

     "parameter1": "value1", 
     "paremeter2": "value2" 

    }; 
}); 
संबंधित मुद्दे