Importer un zip stocké dans la base de données à travers un formulaire pour extraire les fichiers dedans et les intégrer à mon objet métier concerné

Bonjour,

J’ai besoin d’importer un ensemble de fichiers (bulletins de paie) qui me seront fourni dans un zip. J’ai besoin d’extraire les fichiers du zip puis les intégrer à mon objet Salaire puis les lier à la personne concerné. J’ai créé un objet métier “ImportBulletinPAie”, sur lequel je télécharge mon zip puis je crée ma ligne pour lancer l’action “importer les bulletins de paie” qui appelle une fonction importPaie.

Je n’arrive pas à faire le passer de la récupération du document en tant que DoncumentDB au traitement du zip (Extraction, Parcours des fichiers pour les traiter 1 à 1).

Tous les éléments dont j’aurais besoin je les récupère des noms du zip puis du nom des fichiers, donc les seules actions que j’ai besoin de faire sont:

1- Récupération du zip et extraction du nom.
2- Extraction des fichiers 1 à 1 (parcours), getNom() des fichiers.
3- Intégration des fichiers(bulletins de salaire) à la personne concernée.

J’ai besoin de l’aide sur la partie 1 et 2 s’il vous plait.

Bonne journée.

Si votre ZIP est un champ document, il faut utiliser les accesseurs de DocumentDB et l’utilitaire ZIPTool :

import com.simplicite.util.tools.FileTool;
import com.simplicite.util.tools.ZIPTool;
// ...
public String myAction() {
  Grant g = getGrant();
  File tmpDir = new File(g.getTmpDir() + "/paie_" + (new Date()).getTime());
  try {
    DocumentDB doc = getField("myDocField").getDocument(g);
    String zipName = doc.getName();
    // extract in a tmp directory
    ZIPTool.extract(doc.getInputStream(), tmpDir);
    for (File file : tmpDir.listFiles()) {
      // do something with each file
    }
  }
  catch (Exception e) {
    return "Error: "+e.getMessage();
  }
  finally {
    // cleaning
    FileTool.deleteFileOrDir(tmpDir);
  }
  return "Import OK#INFO";
}

Consultez le documentation pour plus de détail sur DocumentDB et ZIPTool.

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.