2013-03-31 11 views
18

मैं HTML फ़ाइल का उपयोग करके ड्राइव में एकाधिक फ़ाइलों को अपलोड करने के लिए एक फ़ाइल इनपुट तत्व का उपयोग करने का प्रयास कर रहा हूं। ऐसा लगता है कि केवल एक फ़ाइल के लिए काम करता है, हालांकि फ़ाइल पिकर एकाधिक फाइलों को चुनने की अनुमति देता है। स्क्रिप्ट लॉग व्यूअर में वापस, मैं केवल अपलोड की गई दो फ़ाइलों में से एक फ़ाइल देखता हूं। क्या यह असमर्थित है, या क्या मैं इसके बारे में गलत तरीके से जा रहा हूं?एक फ़ाइल इनपुट तत्व का उपयोग कर एकाधिक फ़ाइलों को अपलोड करने के लिए कैसे करें

Code.gs:

function logForm(form) { 
    Logger.log(JSON.stringify(form)); 
    return true; 
} 

index.html:

<html> 
    <form id="uploadTest" enctype="multipart/form-data"> 
    <input type="file" multiple="multiple" name="fileUpload"> 
    <input type="button" id="upload" value="upload" 
    onclick="google.script.run.logForm(document.getElementById('uploadTest'));"> 
    </form> 
</html> 

लॉग दृश्य:

{"fileUpload":{"contents":"GIF87a\u0001\u0000\u0001\u0000� 
\u0000\u0000��̖��,\u0000\u0000\u0000\u0000\u0001\u0000 
\u0001\u0000\u0000\u0002\u0002D\u0001\u0000;", 
"type":"image/gif","name":"1x1.gif","length":35}} 

उत्तर

8

एकाधिक फ़ाइल संवाद में चयन के लिए जब आप ब्राउज़ बटन पर क्लिक करें फ़ाइल फ़ील्ड का केवल new browsers supporting HTML5 के लिए होता है। यह पुराने ब्राउज़र के लिए एकाधिक चयन की अनुमति नहीं देगा। पुराने ब्राउज़र के लिए केवल अच्छे समाधान फ़्लैश या जावास्क्रिप्ट प्लगइन्स हैं। Jquery अपलोडर के लिए यहां एक अच्छा संसाधन है (कुछ समर्थन एकाधिक फाइलें): http://creativefan.com/10-ajax-jquery-file-uploaders/। इसलिए मेरा सुझाव कुछ प्लगइन का उपयोग करता है ताकि यह पुराने और नए ब्राउज़र पर समर्थित हो।

+1

आप Ujwal धन्यवाद, मैं कोशिश की है [jQuery एकाधिक फ़ाइल अपलोड प्लगइन] (http://www.fyneworks.com/jquery/multiple-file-upload/#) लिंक से आपको प्रदान की है और यह काम किया उत्तम!। मुझे ब्राउजर सीमा से अवगत था, लेकिन सोचा कि यह अजीब है कि मुझे कई फाइलों का चयन करने की इजाजत थी, लेकिन केवल तत्व को ही सौंपा गया था। एक अंतिम उपाय के रूप में मैं अतिरिक्त तत्व बनाने/निकालने के लिए + और - बटन जोड़ने जा रहा था, लेकिन यह तरीका अधिक सुरुचिपूर्ण है :) – jad

4

मैं फ़ाइलों की सरणी भेजने के लिए संभावना उपयोग कर रहा हूँ। $_FILES

Array 
(
    [files] => Array 
     (
      [name] => Array 
       (
        [0] => 1.png 
        [1] => 2.png 
       ) 

      [type] => Array 
       (
        [0] => image/png 
        [1] => image/png 
       ) 

      [tmp_name] => Array 
       (
        [0] => /tmp/phpDQOZWD 
        [1] => /tmp/phpCELeSw 
       ) 

      [error] => Array 
       (
        [0] => 0 
        [1] => 0 
       ) 

      [size] => Array 
       (
        [0] => 32209 
        [1] => 64109 
       ) 

     ) 

) 

बेशक में

<form action="/" enctype="multipart/form-data" method="post"> 
    <input type="file" name="files[]" /> 
    <input type="file" name="files[]" /> 
    // etc. 
    <input type="submit"> 
</form> 

आप सरणियों की सरणी होगा, क्या आप उन्हें एक एक करके अपलोड करना होगा: बस नाम atrribute को [] जोड़ें। बड़ी संख्या में फाइलों के लिए सुविधाजनक नहीं है, लेकिन सभी ब्राउज़रों में काम करता है। उदाहरण के लिए, jQuery का उपयोग करके आप प्रत्येक बार files[] इनपुट बदलते समय एक और इनपुट जोड़ सकते हैं।

function addOneMoreInput() { 
    $('input[type=file]').last().change(function() { 
     $(this).after('<input type="file" name="files[]" />'); 
     $(this).off('change'); 
     addOneMoreInput(); 
    }); 
} 
addOneMoreInput(); 
संबंधित मुद्दे

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