Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

cannot display image in 11gR2 with simple pl/sql procedure

_Topas_Sep 4 2014 — edited Sep 9 2014

Hello all,

I'm facing a strange situation and maybe you could help me.

I've setup a simple procedure to load and show BLOB images from a table to browser in two different databases (10g and 11g) and different servers.

When I call in 10g:

https://server1:4443/chain/Images_API.Get_Gif?p_name=logorecord1.gif  against 11R2g db1

I get the image

In the second 11g

https://server2:4443/chain/Images_API.Get_Gif?p_name=logorecord1.gif against 10gR2 db2

I get:

The image “https://orapetakjdev.net1.cec.eu.int:4443/chain/Images_API.Get_Gif?p_name=logorecord1.gif” cannot be displayed, because it contains errors.

my Oracle HTTP server logs and mod_plsql logs don't show any errors.

Any idea how to fix this ?

Alternatively in how to debug it ?

Thank you all in advance.

   CREATE TABLE images (

  id     NUMBER(10)    NOT NULL,

  name   VARCHAR2(50)  NOT NULL,

  image  BLOB          NOT NULL

)


CREATE OR REPLACE PACKAGE images_api AS

PROCEDURE load (p_name  IN  images.name%TYPE);

PROCEDURE get  (p_name  IN  images.name%TYPE,

                p_type  IN  VARCHAR2 DEFAULT 'gif'); 

PROCEDURE get_gif  (p_name  IN  images.name%TYPE);

PROCEDURE get_jpeg (p_name  IN  images.name%TYPE);

END;

/


CREATE OR REPLACE PACKAGE BODY images_api AS

PROCEDURE Load (p_name  IN  images.name%TYPE) IS

  v_bfile  BFILE;

  v_blob   BLOB;

BEGIN

  INSERT INTO images (id, name, image)

  VALUES (images_seq.NEXTVAL, p_name, EMPTY_BLOB())

  RETURN image INTO v_blob;

  v_bfile := BFILENAME('IMAGE_DIR', p_name);

  DBMS_LOB.fileopen(v_bfile, DBMS_LOB.file_readonly);

  DBMS_LOB.loadfromfile(v_blob, v_bfile, DBMS_LOB.getlength(v_bfile));

  DBMS_LOB.fileclose(v_bfile);

  COMMIT;

EXCEPTION

  WHEN OTHERS THEN

    ROLLBACK;

    RAISE;

END;

PROCEDURE Get (p_name  IN  images.name%TYPE,

               p_type  IN  VARCHAR2 DEFAULT 'gif') IS

  v_blob  BLOB;

BEGIN

  SELECT image

  INTO   v_blob

  FROM   images

  WHERE  name = p_name;

  OWA_UTIL.mime_header('image/' || p_type);

  -- Start 9i method.

  DECLARE

    v_amt   NUMBER := 30;

    v_off   NUMBER := 1;

    v_raw   RAW(4096);

  BEGIN

    LOOP

      DBMS_LOB.read(v_blob, v_amt, v_off, v_raw);  

      HTP.prn(UTL_RAW.cast_to_varchar2(v_raw));

      v_off := v_off + v_amt;

      v_amt := 4096;

    END LOOP;

  EXCEPTION

    WHEN NO_DATA_FOUND THEN

      NULL;

  END;

  -- End 9i method.

  -- 10g method.

  -- WPG_DOCLOAD.download_file(l_blob);

END;

PROCEDURE get_gif  (p_name   IN images.name%TYPE) IS

BEGIN

  get (p_name, 'gif');

END;

PROCEDURE get_jpeg (p_name  IN  images.name%TYPE) IS

BEGIN

  get (p_name, 'jpeg');

END;

END;


This post has been answered by joelkallman-Oracle on Sep 8 2014
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 7 2014
Added on Sep 4 2014
9 comments
2,578 views