Télécharger plusieurs fichiers à la fois à un Struts2 @Action
J'ai besoin pour télécharger "1000 fichiers" ou "un fichier zip, y compris tous les fichiers" à la fois à l'aide de Struts2. (Par 1000 Fichiers ou un fichier zip, je veux dire j'ai besoin de tous les fichiers téléchargés sur le système, il n'a pas d'importance si l'utilisateur de choisir tous les 1000 fichiers à la fois (ou zip) et les télécharger en un seul fichier, donc je suis à la recherche de celle qui est plus facile à mettre en œuvre et plus efficace)
J'ai lu les réponses suivantes, mais aucun d'entre eux convient le but.
- Struts2 De Téléchargement De Fichier
- Comment puis-je sélectionner et télécharger plusieurs fichiers HTML et le PHP, à l'aide de HTTP POST?
En utilisant le code suivant, lorsque j'utilise une simple Liste de fichiers; il indique le nom de listes, mais lorsque j'utilise la Liste des fichiers qu'il ne montre pas quelque chose et je ne peux pas télécharger les fichiers.
télécharger.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form action="upload" enctype="multipart/form-data" method="post">
<input name="files" type="file" multiple/>
<button type="submit"/>
</form>
</body>
</html>
upload.java
@Action
public class upload implements Addresses {
private List <File> files = new ArrayList <File> ();
public String execute(){
return "success";
}
public upload() {
System.out.println("in upload 1");
for(int i=0;i<files.size();i++)
System.out.println(i + ")" + files.get(i));
System.out.println("in upload 2");
}
public List <File> getFiles() {
return files;
}
public void setFiles(List <File> files) {
this.files = files;
for(int i=0;i<files.size();i++)
System.out.println(i + ")" + files.get(i));
// File fileToCreate = new File("c:\image", files.get(i).toString());
// FileUtils.copyFile(files.get(i), fileToCreate);
}
}
Sortie
in upload 1
in upload 2
<script language="JavaScript">
. Que diriez -<script type="text/javascript">
, <script type="application/javascript">
ou même juste <script>
?La torsion de votre question: pouvez-vous zip les 1000 fichiers 1 fichier ZIP et de le télécharger, puis l'extrait de côté serveur et obtenir la liste des fichiers ?
Oui, la question est mise à jour
si vous pouvez télécharger un zip avec 1000 fichiers, alors c'est un simple upload de fichier... ?!! Dans ce que votre question diffère d'un seul fichier à télécharger ?
Vous devriez être en béton, que voulez-vous de 1000 fichiers de téléchargement ou 1 fichier zip. La dernière option doit être définie de la façon dont le zip doit être créé.
OriginalL'auteur J888 | 2013-05-06
Vous devez vous connecter pour publier un commentaire.
Je vous suggérons d'utiliser Struts Balises au lieu de la plaine des balises HTML, et d'étendre ActionSupport (de retour de son Résultat constantes au lieu de saisir manuellement la composition de la Chaîne de résultat, comme le "résultat").
Cela dit, c'est un testé et de travail exemple.
Remarque: Il ne fonctionne pas sur les anciennes versions d'IE, mais puisque vous êtes à l'aide de HTML5 dans votre propre question, je parie que vous connaissez déjà et vous n'êtes pas le ciblage de vieux IE.
JSP
Remarque à propos de l'
multiple="multiple"
partie: même si dans la documentation officielle, que l'attribut<s:fichier />
de la balise n'est pas défini, depuis Struts 2.1 il est permis à cause decela signifie qu'il sera dessiné sur la JSP est-à -, sans aucune interférence par Struts. De cette façon, Struts se complique pas besoin de mettre à jour ses Balises à chaque fois HTML5 propose une nouvelle fonctionnalité: vous pourriez vous mettre
foo="bar"
trop dans une balise qui permet d'Attributs Dynamiques (<s:file />
,<s:textarea />
, etc), et vous le trouverez dans le code HTML.Action
Ensuite, vous souhaiterez peut-être définir la taille maximale de la Demande, et la taille maximale de chaque fichier unique, comme décrit ici:
Struts.xml - Max multipart taille:
Struts.xml - taille Max d'un fichier (à l'échelle mondiale à un package, ou localement à une Action)
Vérifiez votre Intercepteur de la Pile. Attentivement 🙂
En particulier stackoverflow.com/a/29211248/1654265 et stackoverflow.com/a/33697612/1654265
j'ai copié exactement la même chose étant donné ci-dessus. Il travaille pour un seul fichier à télécharger mais pas de plusieurs. Commencé depuis que j'ai mis à niveau vers struts 2.5.13.
Je vous remercie pour votre réponse Andrea. Ont créé de nouveaux projet pour 2.5.13. Il y avait problème avec certains jar, éventuellement javaassit. Maintenant, c'est de travailler après l'ajout de nouveaux pots. La Migration de type ne pas ajouter des pots correctement. Merci encore une fois
OriginalL'auteur Andrea Ligios
Dans le fichier JSP:-
.fichier java
C'est l'un travaille pour moi , l'espérance de travail pour vous, s'il vous plaît laissez-moi savoir si n'importe quelle question.
OriginalL'auteur Rahul Kumar