Struts2 : Téléchargement et téléversement de plusieurs fichiers

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 :

  1. Téléversement de plusieurs fichiers :

Sélectionner les fichiers à téléverser, après succès, la console affiche :

  1. Téléchargement de fichier, téléchargement du fichier 1.jpg depuis le disque E :

Étiquettes: struts2 upload download file Java

Publié le 2 juin à 02h33