it-swarm.com.ru

Входной TYPE TEXT Значение из формы JSP (enctype = "multipart/form-data") возвращает ноль

Мне нужно загрузить изображение:

<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.

Пожалуйста, помогите

13
jennifer

Попробуйте <input type="text" id="name" name="name" value="J.Doe">.

Правка:

Пример использования 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

Значение null, возвращаемое функцией request.getParameter("name");, связано с тем, что вы используете enctype="multipart/form-data" в своей HTML-форме. 

На этот вопрос подробно ответили в этом post

1
braindead

Добавьте Annotaion @ javax.servlet.annotation.MultipartConfig , а затем просто используйте request.getParameter (), он будет работать отлично.

Или, если вы используете MultipartFormDataRequest, тогда используйте его объект Like MultipartFormDataRequest mrequest; Вместо запроса для ex. mrequest.getParameter ( "имя"); Оно работает.

0
Swati Srivastava