web-dev-qa-db-ja.com

JSPフォーム(enctype = "multipart / form-data")からの入力TYPE TEXT値がnullを返す

画像をアップロードする必要があります:

<form method="post" action="hi.iq/register.jsp" enctype="multipart/form-data">
    Name: <input type="text" name="name" value="J.Doe">
    file: <input type="file" name="file-upload">
    <input type="submit">
</form> 

私が与えた私のサーブレットで

response.setContentType("text/html");

PrintWriter out = response.getWriter();    

String name = request.getParameter("name");

System.out.println("user_id========= "+name);

ただし、nameの値はNULLとして返されます。

Plsヘルプ

14
jennifer

<input type="text" id="name" name="name" value="J.Doe">をお試しください。

編集:

Davidの回答で示唆されているように、Apache Commons Fileuploadを使用したサンプル:

FileItemFactory factory = new DiskFileItemFactory();

// Set factory constraints
// factory.setSizeThreshold(yourMaxMemorySize);
// factory.setRepository(yourTempDirectory);

// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload( factory );
// upload.setSizeMax(yourMaxRequestSize);

// Parse the request
List<FileItem> uploadItems = upload.parseRequest( request );

for( FileItem uploadItem : uploadItems )
{
  if( uploadItem.isFormField() )
  {
    String fieldName = uploadItem.getFieldName();
    String value = uploadItem.getString();
  }
}
10
Thomas

試す

     FileItemFactory factory = new DiskFileItemFactory();
     ServletFileUpload upload = new ServletFileUpload(factory);
     Iterator<FileItem> iterator = upload.parseRequest(request).iterator();
     File uploadedFile;
     String dirPath="D:\fileuploads";
     while (iterator.hasNext()) {

                    FileItem item = iterator.next();
                    if (!item.isFormField()) {

                        String fileNameWithExt = item.getName();

                        File filePath = new File(dirPath);

                        if (!filePath.exists()) {
                            filePath.mkdirs();
                        }

                        uploadedFile = new File(dirPath + "/" + fileNameWithExt);
                        item.write(uploadedFile);                  
                    }
                    else {
            String otherFieldName = item.getFieldName();
            String otherFieldValue = item.getString()
                    }
               }

Apacheが必要ですcommons-fileupload.jarおよびcommons-io.jar

6
Hardik Mishra

私が使用したコンテナは、そのままでマルチパートエンコードされたリクエストをサポートしていません。このため、パラメーターを解析できず、そのままではrequest.getParameter()を使用できません。

リクエストを前処理するには、サーバーサイドで Apache Commons FileUpload のようなものを使用する必要があります

5
David O'Meara

request.getParameter("name");によって返されるnull値は、HTMLフォームでenctype="multipart/form-data"を使用していることが原因です。

これはこの post で完全に回答されています。

1
braindead

Annotaion @ javax.servlet.annotation.MultipartConfigを追加し、request.getParameter()を使用するだけで、完全に機能します。

または、MultipartFormDataRequestを使用している場合は、MultipartFormDataRequest mrequestのようなオブジェクトを使用します。元の要求の代わりに。 mrequest.getParameter( "name");できます。

0