0

ファイルアップロードセクションとチェックボックスなどの他のフィールドを含む multipart/form-data フォームがあります。チェックボックスからの情報に基づいて、「;」で区切られた文字列を作成したいと思います。データベースに送信するため。

私の 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?

            }

ありがとう!

4

2 に答える 2

0

Apache Commons FileUpload の場合、送信したマルチパート フォームの HTML 要素ごとに 1 つのアイテムが常に存在します。

したがって、同じ名前のチェックボックスが複数ある場合、同じフィールド名の複数のアイテムが取得されます。つまり、多くのチェックボックスでは、フィールド名は同じでも値が異なる項目が多数見つかります。

于 2012-06-11T15:50:52.160 に答える
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.
于 2012-06-11T16:22:55.627 に答える