2012-06-11 17 views
0

我有一個multipart/form-data表單,其中包含一個文件上傳部分和其他字段,如複選框。我想根據複選框中的信息創建一個字符串,用「;」分隔。以便將其發送到數據庫。Multipart/form - 從複選框創建一個字符串併發送到db

我UploadServlet看起來是這樣的:

try { 
     // parses the request's content to extract file data 
     List formItems = upload.parseRequest(request); 
     Iterator iter = formItems.iterator(); 

     // iterates over form's fields 
     while (iter.hasNext()) { 

      FileItem item = (FileItem) iter.next(); 
      // processes only fields that are not form fields 
      if (!item.isFormField()) { 

            //doSomething 

       String fileName = new File(item.getName()).getName(); 
       String filePath = uploadPath + File.separator + fileName; 
       File storeFile = new File(filePath);  

       // saves the file on disk 
       item.write(storeFile); 


      } 
      else 
      { 

      // Process regular form field (input type="text|radio|checkbox|etc", select, etc). 
       String fieldname = item.getFieldName(); 
       String fieldvalue = item.getString(); 
       // Do anotherThing 


       // Can I create a string from the checkbox inputs here? 

      } 

謝謝!

回答

0

您需要自己收集多個名稱相同的字段。假設這些複選框的輸入字段名稱是checkboxName,這裏有一個開球例如:

List<String> checkboxValues = new ArrayList<String>(); 

// ... while looping over all items. 

String fieldname = item.getFieldName(); 
String fieldvalue = item.getString(); 

if ("checkboxName".equals(fieldname)) { 
    checkboxValues.add(fieldvalue); 
} 

// ... after looping over all items. 

StringBuilder builder = new StringBuilder(); 

for (String checkboxValue : checkboxValues) { 
    if (builder.length() > 0) builder.append(";"); 
    builder.append(checkboxValue); 
} 

String semicolonSeparatedCheckboxValues = builder.toString(); 
// Save in DB. By the way, why not just using a separate table with a FK? 
// Storing multiple values delimited in a single DB column is a bad practice. 
0

對於Apache Commons FileUpload,您提交的多部分表單中的每個HTML元素總是會有一個項目。

因此,如果您有多個具有相同名稱的複選框,您將獲得多個具有相同字段名稱的項目。換句話說,對於許多複選框,您會發現許多具有相同字段名稱但具有不同值的項目。

+0

因爲我使用的Apache通用文件上載API(由於多/形式的東西),我不能使用的request.getParameter()。有沒有其他的選擇? – user1391078