web-dev-qa-db-fra.com

Entrée TYPE TEXT Valeur du formulaire JSP (enctype = "multipart/form-data") renvoie null

J'ai besoin de télécharger une image:

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

Dans mon servlet j'ai donné 

response.setContentType("text/html");

PrintWriter out = response.getWriter();    

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

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

mais la valeur de name est renvoyée sous la forme NULL.

Aide Pls

13
jennifer

Essayez <input type="text" id="name" name="name" value="J.Doe">.

Modifier:

Un exemple utilisant Apache Commons Fileupload, comme suggéré par la réponse de David:

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

Essayer

     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()
                    }
               }

Il faut Apache commons-fileupload.jar et commons-io.jar

6
Hardik Mishra

Aucun conteneur que j'ai utilisé ne prend en charge les demandes codées en plusieurs parties. Pour cette raison, il ne peut pas analyser les paramètres et vous ne pouvez pas utiliser request.getParameter () tel quel.

Vous devez utiliser quelque chose côté serveur, tel que Apache Commons FileUpload pour prétraiter la demande.

5
David O'Meara

La valeur null renvoyée par la request.getParameter("name"); est due au fait que vous utilisez enctype="multipart/form-data" dans votre formulaire html. 

Ceci a été complètement répondu dans ce post

1
braindead

Ajoutez Annotaion @ javax.servlet.annotation.MultipartConfig et utilisez simplement request.getParameter () pour que cela fonctionne parfaitement.

Ou Si vous utilisez MultipartFormDataRequest, utilisez son objet Like MultipartFormDataRequest mrequest; À la place de request for ex. mrequest.getParameter ("name"); Ça marche.

0
Swati Srivastava