Quatre. Téléversement de plusieurs fichiers :
Cinq. Téléchargement de fichiers avec Struts2 :
Action pour le téléversement de plusieurs fichiers
com.cy.actions.TeleversementFichiersAction.java :
package com.cy.actions;
import java.io.File;
import org.apache.commons.io.FileUtils;
import com.opensymphony.xwork2.ActionSupport;
public class TeleversementFichiersAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File[] fichiers; // Fichiers, correspond à l'attribut name dans fileupload.jsp
private String[] nomsFichiers; // Noms des fichiers
private String[] typesFichiers; // Types de fichiers
public File[] getFichiers() {
return fichiers;
}
public void setFichiers(File[] fichiers) {
this.fichiers = fichiers;
}
public String[] getNomsFichiers() {
return nomsFichiers;
}
public void setNomsFichiers(String[] nomsFichiers) {
this.nomsFichiers = nomsFichiers;
}
public String[] getTypesFichiers() {
return typesFichiers;
}
public void setTypesFichiers(String[] typesFichiers) {
this.typesFichiers = typesFichiers;
}
@Override
public String execute() throws Exception {
for(int i=0; i<fichiers.length; i++){
System.out.println("Nom du fichier : " + nomsFichiers[i]);
System.out.println("Type du fichier : " + typesFichiers[i]);
String cheminFichier = "E:/" + nomsFichiers[i];
File fichierSauvegarde = new File(cheminFichier);
FileUtils.copyFile(fichiers[i], fichierSauvegarde);
}
return SUCCESS;
}
}
Voir le code
Action pour le téléchargement de fichiers
TelechargementFichierAction.java :
package com.cy.actions;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.opensymphony.xwork2.ActionSupport;
public class TelechargementFichierAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String nomFichier; // Nom du fichier à télécharger
public String getNomFichier() throws Exception {
nomFichier=new String(nomFichier.getBytes(),"ISO8859-1"); // Recodage des noms de fichiers en chinois
return nomFichier;
}
public void setNomFichier(String nomFichier){
this.nomFichier = nomFichier;
}
/**
* Retourne le flux du fichier
* @return
* @throws Exception
*/
public InputStream getInputStream() throws Exception{
File fichier = new File("E:/1.jpg"); // Téléchargement du fichier 1.png depuis le disque E
this.nomFichier = "image_beautiful.png"; // Redéfinition du nom du fichier
return new FileInputStream(fichier); // Retourne le flux d'entrée
}
}
Voir le code
struts.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<struts>
<!-- Configuration de la taille maximale des fichiers à téléverser : 20000000 octets, environ 20Mb -->
<constant name="struts.multipart.maxSize" value="20000000"></constant>
<package name="gestion" extends="struts-default">
<action name="televerser" class="com.cy.actions.TeleversementFichierAction">
<result name="input">televersementFichier.jsp</result>
<result name="success">succes.jsp</result>
<!-- Configuration des types de fichiers autorisés
Configuration de la taille maximale des fichiers : 81101 octets, = 79.2KB
-->
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param>
<param name="maximumSize">81101</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
<action name="televerserPlusieurs" class="com.cy.actions.TeleversementFichiersAction">
<result name="input">televersementFichiers.jsp</result>
<result name="success">succes.jsp</result>
</action>
<action name="telecharger" class="com.cy.actions.TelechargementFichierAction">
<result type="stream">
<param name="contentDisposition">attachment;filename=${nomFichier}</param>
</result>
</action>
</package>
</struts>
Page JSP pour le téléversemant de plusieurs fichiers
televersementFichiers.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="televerserPlusieurs" method="post" enctype="multipart/form-data">
Sélectionner fichier 1 : <input type="file" name="fichiers" /><br/>
Sélectionner fichier 2 : <input type="file" name="fichiers" /><br/>
Sélectionner fichier 3 : <input type="file" name="fichiers" /><br/>
<input type="submit" value="Envoyer" />
</form>
</body>
</html>
Page JSP pour un téléversement réussi
succes.jsp :
<body>
Le téléversement des fichiers a réussi !
</body>
Voir le code
Page JSP pour le téléchargement de fichiers
telechargementFichier.jsp :
<body>
<a href="telecharger">Télécharger le fichier</a>
</body>
Résultats des tests :
- Téléversement de plusieurs fichiers :
Sélectionner les fichiers à téléverser, après succès, la console affiche :
- Téléchargement de fichier, téléchargement du fichier 1.jpg depuis le disque E :