Je suis en train de télécharger un fichier en utilisant commons-fileupload-1.1.1.jar
fichier (je sais que ce n'est pas la dernière version, mais il est livré avec struts 1.3.10
donc j'utilise le même).Java - Commons-fileupload.jar - Problème
Maintenant, le problème est quand je parser le request
(HttpServletRequest) pour obtenir un List
de FileItem
s, je reçois une liste vide.
DiskFileItemFactory factory = new DiskFileItemFactory();
File tempDir = new File("/fileUploadDirectory");
tempDir.mkdir();
// Set factory constraints
factory.setSizeThreshold(10000);
factory.setRepository(tempDir);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(10000);
// Parse the request
List items = upload.parseRequest(request);
System.out.println(items);
System.out.println(request.getContentLength());
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
System.out.println("File is a FormField");
} else {
System.out.println("File is a File");
}
}
Q1. Pourquoi je reçois une liste vide? Lorsque j'imprime la taille de la requête par request.getContentLength()
(comme indiqué ci-dessus dans le code), j'obtiens des données numériques (1536) qui, selon moi, indiquent la longueur du fichier. Si elle montre la longueur du fichier, alors pourquoi je ne reçois pas la liste de FileItem
s?
Note: Je l'utilise avec Struts 1.3.10
avec ActionForm
. Est crée un problème.
Remarque: Je ne reçois également aucune exception lors de l'analyse de la demande.
j'utilisais aussi bien 'multipart/form-data' et' post'. J'ai également essayé le composant de téléchargement de fichier intégré Struts. Cela n'a pas fonctionné car j'utilisais la balise ''
Ce n'est pas étrange. Si vous n'utilisez pas les composants fournis par le framework, il ne sera pas en mesure d'associer correctement la requête à une action et un modèle spécifiques. – BalusC