2011-12-29 35 views
14

मैं अपलोड फ़ाइलों के लिए इस कोड का उपयोग कर रहा अपलोड (html में) एक सर्वर के लिए:एकाधिक फ़ाइलों का चयन और

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <label>upload file<input type="file" name="file" id="file" /></label> 
    <label><input type="submit" name="button" id="button" value="Submit" /></label></form> 

यह खुले फ़ाइल ब्राउज़र है और मुझे एक फ़ाइल का चयन करते हैं, और जब मैं पर प्रेस फ़ाइल सबमिट करें मेरे सर्वर पर भेजा गया है।

मुझे आश्चर्य है कि एकाधिक फ़ाइल चुनने का कोई तरीका है या नहीं।

+1

यह भी देखें [php में फ़ाइल अपलोड में एकाधिक फ़ाइलों का चयन करें] (http: // stackoverflow।com/प्रश्न/2071505/select-multi-files-in-file-upload-in-php) – rds

+0

http://www.uploadify.com/ जैसे कई jQuery प्लगइन्स हैं जो आपको एकाधिक फ़ाइल अपलोड करने की अनुमति देते हैं। –

उत्तर

37

आप इस तरह है कि के लिए multiple विशेषता का उपयोग कर सकते हैं,:

<input type="file" multiple /> 

एकाधिक फ़ाइलों का चयन करने के लिए आप Ctrl कुंजी दबाएँ और फ़ाइलों को आप जोड़ना चाहते हैं पर क्लिक करें की जरूरत है।

+4

यह आईई – Exception

+0

में काम नहीं करता है मैंने अभी कोशिश की है और यह आईई 11 में काम किया है। माइक्रोसॉफ्ट के मुताबिक, एक ही एचटीएमएल INPUT TYPE = FILE फ़ील्ड के लिए एकाधिक फाइलों को चुनने की क्षमता HTML5 पर नई है, और आईई 9 या पुराने संस्करणों द्वारा समर्थित नहीं है। – derloopkat

+0

यह आपको एक साथ कई फाइलों का चयन करने की अनुमति देगा लेकिन इसका मतलब यह नहीं है कि यह आपको कई फाइलें अपलोड करने की अनुमति देगा। आपको इसे अपने जेएस में अनुमति देना होगा (यदि आपके पास प्रगति पट्टी, AJAX अपलोड या अपलोड स्थिति उद्देश्य के लिए कोई है) और सर्वर साइड कोड जैसे php, एएसपी। –

2

सबसे आसान तरीका है इस तरह सीधे खेतों लेआउट करने के लिए, यह है:

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
<label>upload file<input type="file" name="file[]" id="file1" /></label> 
<label>upload file<input type="file" name="file[]" id="file2" /></label> 
<label>upload file<input type="file" name="file[]" id="file3" /></label> 
<label><input type="submit" name="button" id="button" value="Submit" /></label></form> 

पढ़ें this कैसे सर्वर साइड पर फ़ाइलों को संभालने के लिए पर।

हालांकि, अगर आप कुछ बेहतर दिखाना चाहते हैं तो आपको uploadify पर एक नज़र रखना चाहिए।

** @ डॉटवेब्स उत्तर के संबंध में, एकाधिक विशेषता not supported by some browsers है।

+0

आपका पहला लिंक टूटा हुआ है। – freemanoid

+0

धन्यवाद। मुझे याद नहीं है कि मैं किस लिंक के बारे में सोच रहा था, लेकिन अब मैंने आधिकारिक PHP मैनुअल के लिए एक लिंक डाला। – Magnus

10

एकाधिक फ़ाइल & अपलोड स्प्रिंग फ्रेमवर्क

का उपयोग करते हुए इस पोस्ट मैं एकाधिक फ़ाइल अपलोड करने के लिए सर्वर साइड और क्लाइंट साइड कोड का वर्णन में का चयन करें।

के बाद कोड appContext.xml

में बहुखण्डीय डेटा उल्लेख

appContext.xml के लिए है

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <!-- one of the properties available; the maximum file size in bytes --> 
    <property name="maxUploadSize" value="20971520"/> 
</bean> 

Simpleupload.jsp: एकाधिक फ़ाइल अपलोड करने के लिए

स्क्रिप्ट:

<script type="text/javascript"> 
    var totalsizeOfUploadFiles = 0; 
    function getFileSizeandName(input) 
    { 
     var select = $('#uploadTable'); 
     for(var i =0; i<input.files.length; i++) 
     {   
      var filesizeInBytes = input.files[i].size; 
      var filesizeInMB = (filesizeInBytes/(1024*1024)).toFixed(2); 
      var filename = input.files[i].name; 
      //alert("File name is : "+filename+" || size : "+filesizeInMB+" MB || size : "+filesizeInBytes+" Bytes"); 
      if(i<=4) 
      {    
       $('#filetd'+i+'').text(filename); 
       $('#filesizetd'+i+'').text(filesizeInMB); 
      } 
      else if(i>4) 
       select.append($('<tr id=tr'+i+'><td id=filetd'+i+'>'+filename+'</td><td id=filesizetd'+i+'>'+filesizeInMB+'</td></tr>')); 
      totalsizeOfUploadFiles += parseFloat(filesizeInMB); 
      $('#totalsize').text(totalsizeOfUploadFiles.toFixed(2)+" MB"); 
      if(i==0) 
       $('#filecount').text("1file"); 
      else 
      { 
       var no = parseInt(i) + 1; 
       $('#filecount').text(no+"files"); 
      }      
     }   
    } 

    function CloseAndRefresh() 
    { 
     opener.location.reload(true); 
     self.close(); 
    }  
</script> 

एचटीएमएल प्रपत्र डिजाइन:

<body> 
<form method="post" id="uploadForm" action="upload" enctype="multipart/form-data"> 
    <table class="span10"> 
     <tr> 
      <td colspan="3"> 
       <legend>Simple Upload</legend> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="file" name="files[]" multiple="multiple" onchange="getFileSizeandName(this);"/> 
      </td> 
     </tr> 
     <tr>  
      <td colspan="3"> 
       <div id="uploaddiv"> 
        <table id="uploadTable" class="table table-striped table-bordered"> 
         <tr> 
          <th>Title</th> 
          <th>Size</th> 
         </tr> 
         <tbody id="tbodyid"> 
          <tr id="tr0"> 
           <td id="filetd0" height="10px" width="50px"></td> 
           <td id="filesizetd0" height="10px" width="5px"></td> 
          </tr> 
          <tr id="tr1"> 
           <td id="filetd1"></td> 
           <td id="filesizetd1"></td> 
          </tr> 
          <tr id="tr2"> 
           <td id="filetd2"></td> 
           <td id="filesizetd2"></td> 
          </tr> 
          <tr id="tr3"> 
           <td id="filetd3"></td> 
           <td id="filesizetd3"></td> 
          </tr> 
          <tr id="tr4"> 
           <td id="filetd4"></td> 
           <td id="filesizetd4"></td> 
          </tr>           
         </tbody> 
         <tfoot> 
          <tr> 
           <td id="filecount"></td><td id="totalsize"></td> 
          </tr> 
         </tfoot> 
        </table> 
       </div> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="3"> 
       <button class="btn btn-primary" type="submit" id="startButton" onClick="CloseAndRefresh();">Start</button> 
       <button class="btn" id="cancelButton">Cancel</button> 
      </td> 
     </tr> 
    </table> 
</form> 

UploadController.java कोड:

@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public void UploadReceipts(@RequestParam("files[]") List<MultipartFile> file) throws Exception { 
    logger.info(" Inside the upload receipts method "+file.size()); 
    for(int i=0; i< file.size(); i++) 
    { 
     if(!file.get(i).isEmpty()) 
     { 
      CommonsMultipartFile cm = (CommonsMultipartFile) file.get(i); 
      logger.info(" Inside the file upload method "+cm.getOriginalFilename()); 
      simpleUploadService.uploadFileandSaveReceipt(cm); 
     } 
    } 
} 
1

आप इस तरह एक बहु विशेषता जोड़ सकते हैं:

<input type="file" multiple="true" /> 
+0

नाम नाम = "फ़ाइल []" –

3

यदि एक से अधिक फ़ाइल अपलोड का उपयोग फॉर्म पर

सबमिट करें
<input type="file" name="file[]" multiple> 

यह फाइलों की एक सरणी बनाता है और उस सरणी से फ़ाइलों का नाम आसानी से प्राप्त कर सकता है।

+0

में ब्रैकेट डालने के लिए याद रखें ब्रैकेट नोटेशन का उपयोग आप सर्वर-साइड चलाने वाले पर निर्भर है, और मानक नहीं है। वास्तव में, एक ही नाम के साथ डुप्लिकेट फॉर्म फ़ील्ड्स में भेजने का मानक तरीका उन्हें बिना ब्रैकेट में भेजना है। PHP, रेल, और अन्य ने गैर-मानक चीजों को करने का फैसला किया। – Brad

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