HttpServletRequest#getParts() retourne une liste vide

J'ai le texte suivant formulaire HTML:

<form enctype="multipart/form-data" method="post" action="/myservlet">
    <input type="file" name="mptest">
    <br />
    <input type="submit" value="upload">
 </form>

Et j'ai le texte suivant servlet qui j'ai créé sur la base cette réponse:

package com.functions;
import java.io.*;
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
//import com.functions.utility.DBConnector;
public class restore extends HttpServlet {
private static final long serialVersionUID = 8097085789553030042L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("--------------------");
System.out.println(" On restore.java ");
System.out.println("--------------------");
try {
fetchDataFromDB(request, response);
} catch (InterruptedException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
private void fetchDataFromDB(HttpServletRequest request,
HttpServletResponse response) throws InterruptedException,
IllegalStateException, ServletException {
try {
System.out.println("Test 1");
for (Part part : request.getParts()) {
String filename = getFilename(part);
System.out.println("Test 2");
if (filename == null) {
System.out.println("Test 3");
//Process regular form field (input
//type="text|radio|checkbox|etc", select, etc).
String fieldname = part.getName();
System.out.println(fieldname);
String fieldvalue = getValue(part);
System.out.println(fieldvalue);
//... (do your job here)
} else if (!filename.isEmpty()) {
System.out.println("Test 4");
//Process form file field (input type="file").
String fieldname = part.getName();
System.out.println(fieldname);
filename = filename
.substring(filename.lastIndexOf('/') + 1)
.substring(filename.lastIndexOf('\\') + 1); //MSIE
//fix.
InputStream filecontent = part.getInputStream();
System.out.println(filecontent);
String[] command = new String[] {
"C:/Program Files (x86)/MySQL/MySQL Server "
+ "5.5/bin/mysql",
"--user=root", "--password=root", "dummy", "-e",
"source "+"C:/Users/John/Desktop/LMS/backup.sql" };
Process restore = Runtime.getRuntime().exec(command);
int check = restore.waitFor();
System.out.println(check);
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
private static String getFilename(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
return cd.substring(cd.indexOf('=') + 1).trim()
.replace("\"", "");
}
}
return null;
}
private static String getValue(Part part) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
part.getInputStream(), "UTF-8"));
StringBuilder value = new StringBuilder();
char[] buffer = new char[1024];
for (int length = 0; (length = reader.read(buffer)) > 0;) {
value.append(buffer, 0, length);
}
return value.toString();
}
}

Mais pour la boucle sur request.getParts() n'est jamais entré. Comment est-il la cause et comment puis-je le résoudre?

double possible de Comment télécharger des fichiers en JSP/Servlet?
Ma réponse à la question qui vous a lié mentionne au bas des liens quant à la façon de traiter le fichier téléchargé en JSP/Servlet.
J'ai essayé la suggestion que vous avez fait dans le lien.... mais il n'est pas même de rentrer dans la boucle for.....

OriginalL'auteur John | 2011-09-16