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 :

Extraire un PDF à partir d'un Blob Oracle encodé base64 [11g]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut Extraire un PDF à partir d'un Blob Oracle encodé base64
    Bonjour,

    J'ai dans une base de données Oracle un Blob encodé en base64 qui contient un PDF, comment
    avec un script PL/SQL décoder ce blob afin de récupérer et afficher correctement le fichier PDF.

    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Voir package Utl_encode.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut Base64 Blob to Blob
    j'ai trouve cette fonction pour decoder, mais elle concerne une base 64 clob to blob,
    je cherche plutôt Base64 blob to blob.

    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
    CREATE OR REPLACE FUNCTION base64decode(p_clob CLOB)
      RETURN BLOB
    -- -----------------------------------------------------------------------------------
    -- File Name    : <a href="https://oracle-base.com/dba/miscellaneous/base64decode.sql" target="_blank">https://oracle-base.com/dba/miscella...se64decode.sql</a>
    -- Author       : Tim Hall
    -- Description  : Decodes a Base64 CLOB into a BLOB
    -- Last Modified: 09/11/2011
    -- -----------------------------------------------------------------------------------
    IS
      l_blob    BLOB;
      l_raw     RAW(32767);
      l_amt     NUMBER := 7700;
      l_offset  NUMBER := 1;
      l_temp    VARCHAR2(32767);
    BEGIN
      BEGIN
        DBMS_LOB.createtemporary (l_blob, FALSE, DBMS_LOB.CALL);
        LOOP
          DBMS_LOB.read(p_clob, l_amt, l_offset, l_temp);
          l_offset := l_offset + l_amt;
          l_raw    := UTL_ENCODE.base64_decode(UTL_RAW.cast_to_raw(l_temp));
          DBMS_LOB.append (l_blob, TO_BLOB(l_raw));
        END LOOP;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          NULL;
      END;
      RETURN l_blob;
    END;
    /

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2019
    Messages : 18
    Par défaut Réponse
    j'ai trouvé la solution avec cette fonction:

    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
    Create Or Replace function DecodeToBlob(pBlob blob) return blob is
    -- Decodes a Base64 encoded clob into a blob
      MAX_DEC_CHUNK_LEN constant pls_integer := 14784; -- Don't change!!
      vLen pls_integer := coalesce(dbms_lob.getlength(pBlob), 0);
      vBufferRaw raw(32767);
      vBufferVarchar2 varchar2(32767 byte);
      vBufferSize integer := MAX_DEC_CHUNK_LEN;
      vOffset integer := 1;
      vResult blob;
    Begin
     
      case
        when vLen = 0 then
          vResult := case when pBlob is null then null else empty_blob() end;
        when vLen <= MAX_DEC_CHUNK_LEN then
          vResult := utl_encode.base64_decode(pBlob);
        when vLen > MAX_DEC_CHUNK_LEN then
          dbms_lob.createtemporary(vResult, false, dbms_lob.call);
          for i in 1..ceil(vLen / vBufferSize)
          loop
            dbms_lob.read(pBlob, vBufferSize, vOffset, vBufferVarchar2);
            vBufferRaw:=utl_encode.base64_decode(vBufferVarchar2);
            dbms_lob.writeappend(vResult, utl_raw.length(vBufferRaw), vBufferRaw);
            vOffset := vOffset + vBufferSize;
          end loop;
      end case;
      return vResult;
     
    end;

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

Discussions similaires

  1. Génération PDF à partir d'un Blob Oracle
    Par drake56 dans le forum C++
    Réponses: 20
    Dernier message: 22/07/2013, 14h46
  2. [1.x] Comment afficher un pdf à partir des données
    Par farhaenis dans le forum Symfony
    Réponses: 6
    Dernier message: 11/07/2011, 11h09
  3. [SQL-Server] comment afficher une image à partire d'un Blob sql server
    Par assousoft dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/09/2010, 22h46
  4. Afficher une image à partir d'un Blob
    Par reeda dans le forum JSF
    Réponses: 22
    Dernier message: 17/07/2009, 09h59
  5. [JDBC]ouvrir un fichier pdf à partir d'un blob
    Par souletis dans le forum JDBC
    Réponses: 5
    Dernier message: 25/01/2007, 21h03

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