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

Apex Oracle Discussion :

ApEx - Utilisation d'un BFILE


Sujet :

Apex Oracle

  1. #1
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut ApEx - Utilisation d'un BFILE
    Bonjour,

    J'utilise une fonction PL/SQL qui permet de récupérer un fichier (excel en l'occurence) situé en local sur le serveur, via un BFILE.

    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
     
    create or replace PROCEDURE display_bfile(p_id NUMBER) IS
      v_amt   NUMBER DEFAULT 32767;
      v_off   NUMBER DEFAULT 1;
      v_raw   RAW(32767);
      v_bfile BFILE;
    BEGIN
      -- On récupère le pointeur vers le fichier
      SELECT filename INTO v_bfile FROM t_bfile WHERE id = p_id;
      -- On ouvre le fichier
      dbms_lob.fileopen(v_bfile);
      -- On défini de manière arbitraire un mime/type
      owa_util.mime_header('application/vnd.ms-excel');
      -- On affiche le contenu de notre fichier
      BEGIN
        LOOP
          dbms_lob.READ(v_bfile, v_amt, v_off, v_raw);
          htp.print(utl_raw.cast_to_varchar2(v_raw));
          v_off := v_off + v_amt;
          v_amt := 400;
        END LOOP;
      EXCEPTION
        WHEN no_data_found THEN
          NULL;
      END;
      -- On ferme notre fichier
      dbms_lob.fileclose(v_bfile);
    END;
    J'ouvre le fichier via IE ou firefox avec une application Oracle Express.
    Mon problème est le suivant:
    Cela marche sans problème pour les fichier de moins de 3 Mo ... Par contre au dela, soit le fichier ne s'ouvre pas du tout, soit il est tronqué.

    Est ce qu'il existe une limitation à ces fonctions? Et-il possible d'augmenter cette limitation?

    Merci d'avance
    AkA

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    essaye avec htp.prn au lieu de htp.print

    Pour info : http://asktom.oracle.com/pls/ask/f?p...A:232814159006

  3. #3
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Merci de ta réponse Fred_D
    Je viens de tester avec htp.prn, et cela de change pas grand chose!
    Je viens de tester avec 3 fichiers xls (2.1, 5.1 et 8.5 Mo) et aucun ne fonctionne!
    J'obtiens un message d'erreur d'excel du style:
    Impossible d'accéder à 'msoXXX.xls'. Le fichier peut etre en lecture seule, ou etc etc..
    Puis

    Impossible d'accéder à 'wwv_flow.accept'.
    Pourtant, cela marche très bien avec un document de 14 Ko.
    Je ne comprends pas très bien! J'ai l'impression que tant que le document est inférieur au raw c'est bon.
    Qqn à une idée

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    t'as essayé avec les mêmes valeurs que dans le lien que j'ai mis ?

  5. #5
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Oui, j'ai utilisé exactement les même valeurs, mais cela ne change rien.

    Par contre, en regardant de plus près l'exemple du site, je me rends compte qu'il n'affiche pas directement le fichier à partir du BFILE, mais le stock dans un BLOB pour ensuite l'afficher.
    Peut-etre qu'il n'est pas possible de directement afficher le fichier depuis le BFILE... Enfin cela me parait quand même bizzare puisque cela reste une fonction web "standard".
    Et vu qu'il d'agit d'oracle express, j'ai pas trop envie de stocker mes doc direct dans la base à cause de la limitation de celle ci.

    Je continue à chercher, et si qqn à une idée, elle est la bienvenue !

    AkA

  6. #6
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour,


    Je suis toujours sur le problème... Je n'ai pas avancé d'un yota, meme avec le forum officiel.
    Si qqn à une idée avant que mon poing traverse littéralement l'écran... je suis preneur!

  7. #7
    AkA
    AkA est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    J'ai finalement trouvé! Je met le code en cas où, si un jour qqn cherche une procédure pour téléchager des documents via un BFILE.

    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
     
    CREATE OR REPLACE PROCEDURE download_file(p_id IN VARCHAR2)
    IS
        v_length NUMBER;
        x_bfile BFILE;
        dir_alias VARCHAR2(30);
        x_filename VARCHAR2(2000);
     
    BEGIN
       SELECT DOC_FILE,  DBMS_LOB.GETLENGTH(DOC_FILE) 
       INTO x_bfile,  v_length 
       FROM DOCUMENTS 
       WHERE doc_id = p_id;
     
        dbms_lob.filegetname(x_bfile, dir_alias, x_filename);
        --headers
        OWA_UTIL.mime_header ('application/octet', FALSE);
        HTP.p ('Content-length: ' || v_length);
        htp.p('Content-Disposition:  attachment; filename="'||substr(x_filename,instr(x_filename,'/')+1)|| '"');
        OWA_UTIL.http_header_close;
     
    BEGIN
        wpg_docload.download_file(x_bfile);
        dbms_lob.close(x_bfile);
    END;
    END download_file;

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

Discussions similaires

  1. utilisation de Bfile
    Par happymiss dans le forum JDBC
    Réponses: 0
    Dernier message: 12/04/2012, 18h23
  2. Utilisation des BFILE Oracle sous java
    Par marti dans le forum JDBC
    Réponses: 12
    Dernier message: 11/01/2008, 16h46
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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