11

apache-commons-fileuploadからファイルを取得するために使用しclientていserverます(JSPおよびを使用Servlet)。

JSP/HTML

<form method="POST" action="GetFile" enctype="multipart/form-data">
<input type="file" name="datafile">
<input type="text" name="text1">
<input type="submit" value="Next">
</form>

サーブレット: GetFile

System.out.println(request.getParameter("text1"));

ファイルをサーバーにアップロードすることはできますが、 の値を取得できません ( の値をtext1取得servletnulltext1いますservlet) 。textfieldserver

  • フォームのオプションではenctype="multipart/form-data"、他のフォーム データを送信できませんか? それが許可されていない場合、この追加textfieldをに送信する必要がある他のオプションは何ですかserver
  • または、私のコードに他の問題がありますか?
4

5 に答える 5

14

フォームのオプションではenctype="multipart/form-data"、他のフォーム データを送信できませんか? 許可されない場合、この追加のテキストフィールドをサーバーに送信するために必要な他のオプションは何ですか。

いいえ、使用には問題ありませんenctype="multipart/form-data"。他のフィールドを取得して、そのような形式でファイルすることができます。

または、私のコードに他の問題がありますか?

はい、とりあえず。を使用している間は、 を使用enctype="multipart/form-data"してパラメータを直接取得することはできませんrequest.getParameter(name);。それを使用している間、フォームフィールドはリクエストのパラメーターとして使用できず、ストリームに含まれているため、通常の方法では取得できません。これを行う方法は、commons-fileupload# Processing the Uploaded Items のドキュメントで見つけることができます。

于 2013-02-27T06:17:24.393 に答える
14

パラメーターは失われません。パラメーターが要求ストリームの一部であるというだけです。

リクエストからすべてのアイテムを取得し、アイテムの種類に応じて反復して処理する必要があります

List  items = upload.parseRequest(request);

入手方法はこちら

// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();

    if (item.isFormField()) {

      String name = item.getFieldName();//text1
      String value = item.getString();

    } else {
        processUploadedFile(item);
    }
}
于 2013-02-27T06:36:05.057 に答える
0

サーブレットで HTML フォーム フィールドを取得するベスト プラクティスは、apache commons-fileupload 1.3 jar を使用することです。

iterator を使用してマルチパート HTTPServletRequest を繰り返し処理し、for ループを使用して isFormField() かどうかを確認します。

   String item1=null,item2=null,item3=null;

    if(item.isFormField())
    {


        if(item.getFieldName().equals("field1"))
        {   
          item1=item.getString();
        }


        if(item.getFieldName().equals("field2"))
        {   
             item2=item.getString();
        }



        if(item.getFieldName().equals("field3"))
        {   
             item3=item.getString();
        }


    }

HTMLファイルは次のようになります

<html>
<body>
<form action="servletname" method="post" enctype="multipart/form-data">

<input type="text" name="field1">
<input type="text" name="field2">
<input type="text" name="field3">
<input type="file" name="filetoupload">
<input type="submit" value="Upload">  

</form>
</body>
</html>
于 2014-02-05T08:48:08.427 に答える