2012-06-11 1 views
0

파일 업로드 섹션과 체크 박스와 같은 다른 필드가 포함 된 다중 파트/양식 데이터 양식이 있습니다. ";"로 구분 된 체크 박스의 정보를 기반으로 문자열을 만들고 싶습니다. 그것을 데이터베이스로 보내기 위해서입니다.Multipart/form - 체크 박스에서 문자열을 생성하고 db로 보내기

내에서 UploadServelt은 다음과 같습니다

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

내가 (때문에 다중/폼 물건) 아파치 공통의 파일 업로드 API를 사용하고 있기 때문에이 request.getParameter()를 사용할 수 없습니다. 다른 옵션이 있습니까? – user1391078

관련 문제