Comment publier appel ajax avec multipart/form-data?

J'ai besoin de télécharger un fichier à partir d'extjs page, via l'appel AJAX, pour le serveur. Je suis en mesure de le faire avec une simple page HTML à servlet, mais à l'aide de extjs (v4.0.7) je ne reçois pas de fichier dans ma servlet quand je pars demande. Servlet reconnaît multipart page, mais rien ne vient à l'appel. Quelqu'un peut-il me dire ce que je fais de mal dans mon code?

EXTJS code:

var fileName = Ext.getCmp("fileName").getValue();

Ext.Ajax.request({
    url : 'UploadServlet',
    method: 'POST',  
    headers: {'Content-Type': 'multipart/form-data'},
    params :{
       'fileName': fileName.trim()
    },

    success: function ( result, request ) {
        resultData = result.responseText;
    },
    failure: function ( result, request ) {
        resultData = result.responseText;
    }   
});

Servlet code:

protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {  
.......
//Check that we have a file upload request
isMultipart = ServletFileUpload.isMultipartContent(request);
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter( );
if( !isMultipart ){
//display no file attached error
return;
}
//Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
//maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
//Location to save data that is larger than maxMemSize.
factory.setRepository(new File(tempDir));
//Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
//maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try{ 
//Parse the request to get file items.
//////fileItems is empty, 
////nothing is comming from extjs page/////////
List<FileItem> fileItems = upload.parseRequest(request);
//Process the uploaded file items
Iterator<FileItem> i = fileItems.iterator();
while ( i.hasNext () ) {                
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () ) {
//Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
//check if file exists
File propFile = new File(tempDir, fileName.substring( fileName.lastIndexOf("\\")));
if (!propFile.exists()) {  
//Write the file
if( fileName.lastIndexOf("\\") >= 0 ){
file = new File(tempDir + 
fileName.substring( fileName.lastIndexOf("\\"))) ;
}else{
file = new File(  tempDir + 
fileName.substring(fileName.lastIndexOf("\\")+1)) ;
}   
//InputStream uploadedStream = fi.getInputStream();
fi.write( file ) ;
out.println("Uploaded Filename: " + fileName + "  is in " + filePath + "<br>");
} 
..... 
}
}

OriginalL'auteur JS11 | 2013-06-11