どのように私は、Apache Commonsの持つマルチパート形式で他のパラメータを読み取ることができます

StackOverflow https://stackoverflow.com/questions/350794

質問

私は(multipart / form-dataエンコーディングを使用して)バックサーブレットに掲載されているファイルのアップロードフォームを持っています。サーブレットでは、私がアップロードを処理するためのApache Commonsのを使用しようとしています。しかし、私はまた、単なるフィールドです形でいくつかの他のフィールドを持っています。どのように私はリクエストからこれらのパラメータを読むことができますか?

たとえば、私のサーブレットでは、私はuplaodedファイルを読み込むために、このようなコードを持っています:

    // Create a factory for disk-based file items
    FileItemFactory factory = new DiskFileItemFactory();
    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    Iterator /* FileItem */ items = upload.parseRequest(request).iterator();
    while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        ... do stuff ...
    }
役に立ちましたか?

解決

あなたはこのような何かを試すことができます:

while (items.hasNext()) {
        FileItem thisItem = (FileItem) items.next();
        if (thisItem.isFormField()) {
            if (thisItem.getFieldName().equals("somefieldname") {
                String value = thisItem.getString();
                // Do something with the value
            }
        }

    }

他のヒント

これを考え出すのに数日かかったが、ここにある、それは動作しますが、あなたはマルチパートデータ、ファイルとのparamsを読み取ることができ、ここでのコードは、次のとおりです。

    try {

        ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iterator = upload.getItemIterator(req);
        while(iterator.hasNext()){


            FileItemStream item = iterator.next();
            InputStream stream = item.openStream();
            if(item.isFormField()){
                if(item.getFieldName().equals("vFormName")){

                    byte[] str = new byte[stream.available()];
                    stream.read(str);
                    full = new String(str,"UTF8");
                }
            }else{
                byte[] data = new byte[stream.available()];
                stream.read(data);
                base64 = Base64Utils.toBase64(data);
            }
        }

    } catch (FileUploadException e) {

        e.printStackTrace();
    }

あなたはまだ?

request.getParamを()してみてくださいました
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top