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