Zum Inhalt springen

Problem mit Intermedia - ORDimage


Chriss007

Empfohlene Beiträge

Hallo!

Habe ein Problem: Ich wollte/will Bilder (.jpg) in einer Oracle 817 Datenbank abspeichern. Nach langem Durchsuchen des Internets bin ich dann auf auf die Stichpunkte Intermedia und ORDimage gestoßen. Außerdem habe ich folgende Schritte gefunden um Bilder in die DB zu speichern:

1. Schritt (Tabelle anlegen):

create table imedia (

sno number(4),

image ordsys.ordimage

)

/

2.Schritt (Directory anlegen):

CREATE OR REPLACE DIRECTORY IMG AS 'C:\IMG';

3.Schritt (Bild in die Datenbank laden):

1 DECLARE

2 pict ORDSYS.ORDIMAGE;

3 ctx RAW(4000);

4 BEGIN

5 SELECT i.image INTO pict from imedia i

6 WHERE i.sno = 1 FOR UPDATE;

7 pict.setSource('FILE','IMG','bild.jpg');

8 pict.import(ctx);

9 UPDATE IMEDIA i SET i.imAgE = pict WHERE i.SNO=1;

10 END;

11 /

Das Bild, welches ich in die DB laden möchte befindet

sich im Verzeichnis IMG auf dem Laufwerk C, also "C:\IMG".

Doch leider bekomme ich jedes Mal wenn ich Schritt 3 auführe, folgende Fehlermeldung von SQL zurück:

FEHLER in Zeile 1:

ORA-01403: Keine Daten gefunden

ORA-06512: in Zeile 5

SQL findet also die Bilddatei nicht!?

Kennt sich jemand damit aus, muss ich noch irgendetwas Wichtiges einstellen, um Bilder in die DB laden zu können?

Würde mich um eure Beiträge freuen... Danke schonmal im Voraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

du musst auch natuerlich indezieren, dann findest du auch was. wenn du nichts findest, wie mann intermediaindezes anlegt, schicke ich dir einen beispiel... ist eigentlich easy.

P.S.: das thema hatten wir hier schon , suche doch mal...

Denise

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Denise!

Erstmal Danke für deine Antwort!

Könntest du mir vielleicht das Beispiel über

intermediaindezes schicken oder unter meinen Beitrag schreiben?

Hätte da aber noch ein zweites Problem:

Wenn ich die Bilder dann in einer Tabelle in der DB gespeichert habe, wie bekommen ich diese dann wieder in einem HTML-Frontend ausgeben?

Habe zwar jede Menge Seiten im Netz gefunden, wie dies mit PHP funktioniert aber keine einzige Seite mit PL/SQL.

Könntest du mit da vielleicht weiterhelfen?

Na dann, noch einen schönen Tag!

CU und Danke!

Chriss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Criss!!!

Versuch mal damit... wenns doch zuwenig wird habe dir ja ne nachricht geschickt...

CREATE TABLE file_ds

(id number(8) PRIMARY KEY,

docs varchar2(60))

/

INSERT INTO file_ds VALUES (1000, 'C:\1.htm');

INSERT INTO file_ds VALUES (1001, 'C:\2.htm');

commit;

CREATE INDEX idt_file_ds on file_ds (docs)

INDEXTYPE IS CTXSYS.CONTEXT

PARAMETERS ('DATASTORE CTXSYS.FILE_DATASTORE')

/

wenn du dann noch nachtraeglich was insertest, musst du noch folgenden befehl abgeben:

ALTER INDEX idt_file_ds REBUILD ONLINE('SYNC');

Gruesse

Denise

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Denise!

Nein, die Bilder sollten nicht extern gespeichert werden. Über die Performance mache ich mir auch weniger Sorgen, da es sehr "kleine" Bilder sind. Aber habe es jetzt hinbekommen die Bilder in der Datenbank zu speichern:

---- Anlegen der Tabelle Pictures

create table pictures

(

id number,

image ordsys.ordimage

);

---- Directory anlegen

create or replace directory imgdir as 'c:\test\';

---- Sequence anlegen

create sequence imageseq start with 1;

---- Bild in DB speichern

create or replace procedure load_image_ipix(file_name varchar)

AS

obj ORDSYS.ORDImage;

nxtSeq number;

ctx raw(4000):=null;

BEGIN

select imageseq.nextval into nxtseq from dual;

insert into pictures (id, image) values (nxtseq,

ORDSYS.ORDImage (ORDSYS.ORDSOURCE(EMPTY_BLOB(),

NULL,NULL,NULL,SYSDATE,NULL),

NULL,NULL,NULL,NULL,NULL,NULL,NULL));

select t.image into obj from pictures t

where t.id = nxtseq for update;

obj.setProperties('height=320 width=240 mimeType=application/x-ipix');

obj.importFrom(ctx,'FILE','IMGDIR','bild.jpg');

update pictures t set t.image=obj

where t.id = nxtseq;

commit;

END;

/

Na gut, das hat geklappt. Aber wie kann ich das Bild mit Hilfe von PL/SQL im Browser ausgeben?

Habe dazu auch schon das komplette Forum durchsucht, doch leider nichts gefunden. :-(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...