IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Comment modifier la valeur dans un MultipartConfig


Sujet :

Java EE

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut Comment modifier la valeur dans un MultipartConfig
    Bonjour

    J'utilise les annotations pour spécifier le chemin où seront copier mes fichiers:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @WebServlet( urlPatterns = "/ajoutJournal", initParams = @WebInitParam( name = "chemin", value = "/fichiers/journal/" ) )
    @MultipartConfig( location = "c:/fichiers/journal", maxFileSize = 2 * 1024 * 1024, maxRequestSize = 5 * 10 * 1024 * 1024, fileSizeThreshold = 1024 * 1024 )
    public class AjoutJournal extends HttpServlet {
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    try
        {
          Part part = request.getPart(CHAMP_FICHIER);
     
          if(part == null)
          {
           throw new FormValidationException("Le fichier envoyé ne doit pas dépasser 2Mo.");
          }
           else
          {
            nomFichier = getNomFichier(part);
     
          if ((nomFichier != null) && (!nomFichier.isEmpty()))
          { 
            nomFichier = nomFichier.substring(nomFichier.lastIndexOf('/') + 1).substring(nomFichier.lastIndexOf('\\') + 1);
     
            contenuFichier = part.getInputStream();
     
            MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
            String contentType = request.getServletContext().getMimeType(nomFichier);
     
            if (contentType.startsWith("application/pdf"))
            {
              String[] fileNameSplits = nomFichier.split("\\.");
              int extensionIndex = fileNameSplits.length - 1;
              nomFichier = "journal-"+mois + "-"+annee + "." + fileNameSplits[extensionIndex];
              System.out.println("fichier est: " + nomFichier);
     
              ecrireFichier(contenuFichier, nomFichier, chemin);
            } 
            else {
              throw new FormValidationException("Le fichier envoyé doit être un pdf.");
            }   
          }
          else
              {
                  throw new FormValidationException("Le fichier ne doit pas être vide.");
                }
     
          }
     
     
        }
    Donc mes fichiers seront copiées dans c:/fichiers/journal.

    Sauf que j'aimerais copier chaque fichier dans un sous-dossier en fonction de l'année du fichier c'est-à-dire que pour 2017, un nouveau dossier nommé 2017 sera créé et copié dans c:/fichiers/journal/2017.

    Mais comme j'ai déjà fixé les chemins dans les annotations:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @MultipartConfig( location = "c:/fichiers/journal"....)
    comment faire pour ajouter le nom du nouveau répertoire 2017 à la fin du chemin défini dans l'annotation?

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Sans doute une piste : https://stackoverflow.com/questions/...in-servlet-3-0

    Je ne pense pas que vous pouvez le faire via le multiPartConfig.

    Bon courage

  3. #3
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Bon j'ai trouvé la solution, il fallait juste créer le nouveau répertoire, soit manuellement, soit dans l'application, et ensuite ajouter le nom juste entre le chemin et le nom du fichier.

    Donc si par exemple je veux que le fichier soit créé dans le répertoire 2017, je crée le répertoire nommé 2017 et j'ajoute le string 2017 juste avant le nom du fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sortie = new BufferedOutputStream(new FileOutputStream(new File(chemin+"2017/" + nomFichier)), 10240);
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment modifier une valeur dans un fichier à clef
    Par eudes dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/11/2009, 19h40
  2. COmment modifier des valeurs dans une requête?
    Par thibouille dans le forum Bases de données
    Réponses: 20
    Dernier message: 26/02/2008, 16h43
  3. Réponses: 6
    Dernier message: 15/02/2008, 11h10
  4. Réponses: 9
    Dernier message: 04/05/2006, 17h33
  5. Réponses: 4
    Dernier message: 29/03/2006, 08h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo