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

PL/SQL Oracle Discussion :

Peut-on gérer les fichiers compressés au format zip et non gzip ?


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut Peut-on gérer les fichiers compressés au format zip et non gzip ?
    Bonjour,

    j'utilise le paquetage utl_compress pour compresser ou décompresser des fichiers (après avoir eu de l'aide dans ce forum )
    Par contre, cela ne fonctionnerait que pour le formats gzip.

    Comment faire pour le format zip ?

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Si tu veux gérer du zip en PLSQL, regarde mon blog developpez
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merdouille de merdouille !!! Pourquoi g00gle ne m'a pas sorti ton blog
    Je me suis e..erdé à tenter (j'y suis pas arrivé) de réinventer l'eau chaude

    Faut que je me penche sur ton code.

    Merci McM

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut

    N'hésite pas si tu as des questions ou des remarques sur le package ou son utilisation.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 30
    Points : 18
    Points
    18
    Par défaut J'y arrive pas
    Bonjour,
    j'essaie de compresser/décompresser un fichier avec les fonctions et procédures présentes dans as_zip mais ça veut pas

    J'ai notamment essayé d'appeler save_zip avec le bon directory mais ça ne fonctionne pas. J'ai un message d'erreur "ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur".

    Si j'ai un directory MY_DIR avec dedans un fichier toto.zip, que faut-il faire pour le décompresser ?

    et, inversement, si j'ai un fichier toto.txt qui peut faire jusqu'à 4 ou 5 Mo, qui faut-il appeler (McM, mais sinon ...) ?

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Le package ne gère que le zip en tant que BLOB (avec bien sur lecture/écriture dans un directory Oracle). Il n'y a pas de fonction pour dézipper dans le directory Oracle (faut le faire à la main).

    Il y a quelques exemples dans les spec du package, mais c'est vrai que la lecture d'un fichier zip directement sur le serveur n'est pas indiqué.

    Exemple qui lit un fichier monzip.zip dans le directory UTL_DIR, et qui affiche les fichiers présents (avec tailles et date), puis récupère chaque fichier dans un BLOB [v_doc]
    Affichage de la taille de ce blob (pour montrer qu'on peut en faire ce qu'on veut), et écriture du BLOB dans le directory

    Attention, c'est de l'écriture de fichier, pas de la décompression (dans le sens où les fichiers sont créés en date du jour).
    Attention² : le nom de fichier (zip_files(i).filename) contient le chemin du fichier dans le zip (s'il y a un répertoire)
    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
    DECLARE
      v_zip BLOB;
      zip_files as_zip.file_list;
      v_doc BLOB;
    BEGIN
      v_zip := as_zip.file2blob(p_dir =>'UTL_DIR', p_file_name => 'monzip.zip');
      zip_files  := as_zip.get_file_list( v_zip );
      FOR i IN zip_files.FIRST() .. zip_files.LAST
      LOOP
    	dbms_output.put_line(DBMS_LOB.SUBSTR(zip_files(i).filename,2000,1) ||' '|| TO_CHAR(zip_files(i).datemaj,'DD/MM/RRRR HH24:MI:SS') ||' size:'|| zip_files(i).size_comp ||' / '|| zip_files(i).size_uncomp);
    	v_doc := as_zip.get_file(v_zip, DBMS_LOB.SUBSTR(zip_files(i).filename,2000,1) );
        DBMS_OUTPUT.put_line('taille blob:'|| DBMS_LOB.getlength(v_doc));
        as_zip.save_zip(p_zipped_blob => v_doc, p_dir => 'UTL_DIR', p_filename => DBMS_LOB.SUBSTR(zip_files(i).filename,2000,1));
      END LOOP;
    END;
     
     
    put_img_1.txt 06/07/2015 19:22:40 size:500 / 3216
    taille blob:3216
    put_img.txt 07/07/2015 16:08:00 size:766 / 3216
    taille blob:3216
    rois_NB_1.bmp 06/07/2015 18:44:42 size:514 / 3262
    taille blob:3262
    rois_NB.bmp 07/07/2015 15:23:42 size:802 / 3262
    taille blob:3262
    toto.pdf 27/02/2015 13:40:40 size:4318 / 5044
    taille blob:5044
    J'aurais du changer le nom de la procédure SAVE_ZIP en BLOB2FILE



    Pour la seconde question, tu as des exemples dans le package (specifications du package) mais c'est vrai que le premier est celui d'Anton et regroupe tout.

    Pour zipper un fichier dans un nouveau zip (pas le rajouter dans un zip existant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare
      g_zipped_blob blob;
    begin
      as_zip.add1file( g_zipped_blob, 'toto.txt', as_zip.file2blob( 'MYDIR', 'toto.txt' ) );
      as_zip.finish_zip( g_zipped_blob );
      as_zip.save_zip( g_zipped_blob, 'MYDIR', 'toto.zip' );
      dbms_lob.freetemporary( g_zipped_blob );
    end;
    pour rajouter un fichier (fic2.txt) dans un zip existant sur le serveur (toto.zip)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE
      g_zipped_blob blob;
    BEGIN
    	g_zipped_blob := as_zip.file2blob( 'MYDIR', 'toto.zip' );
      as_zip.init_zip(g_zipped_blob);
      as_zip.add1file( g_zipped_blob, 'fic2.txt', as_zip.file2blob( 'MYDIR', 'fic2.txt' ) );
      as_zip.finish_zip( g_zipped_blob );
      as_zip.save_zip( g_zipped_blob, 'MYDIR', 'toto.zip' );
      dbms_lob.freetemporary( g_zipped_blob );
    END;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Voila, j'ai modifié le Blog pour rajouter ces exemples qui manquaient.

    Merci
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. [PDO] Besoin d'aide pour gérer un fichier .db : Sqlite format 3
    Par Dadishome dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2008, 15h55
  2. Réponses: 4
    Dernier message: 02/04/2008, 18h01
  3. Composant pour gérer les fichiers PDF
    Par BXDSPORT dans le forum Delphi
    Réponses: 4
    Dernier message: 27/05/2007, 08h53
  4. je ne peut pas explorer les fichiers de mon CD
    Par wodel dans le forum SUSE
    Réponses: 2
    Dernier message: 26/02/2007, 10h35
  5. [VB.Net] Comment gérer les fichiers ?
    Par JPV_MJ dans le forum VB.NET
    Réponses: 12
    Dernier message: 27/08/2006, 21h59

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