Thread Oracle-DB: Auslesen von BLOBs und speichern (16 answers)
Opened by provisoft at 2012-04-04 16:25

GwenDragon
 2012-04-04 16:53
#157245 #157245
User since
2005-01-17
14749 articles
Admin1
[Homepage]
user image
Ungetestete Schnippsel:
Code (perl): (dl )
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use DBI;
use GD;
use CGI;

# Handle für die Ausgabe diverser CGI-"Sachen"
my $cgi = CGI->new;


# DB öffnen
my $dbh = DBI->connect('dbi:Oracle:DB','username','password') or die $DBI::errstr;

### --------------------------------------------------

# SQL-Abfrage für das Auslesen des Bildes aus der DB vorbereiten
my sth = $dbh->prepare(<<"SQL");
SELECT imgdata FROM images WHERE images_id=?;
SQL
# SQL auführen
$sth->execute($imageid);

# Daten des BLOB lesen
my @data = $sth->fetchrow_array;
my $BLOB = shift @data;

### ---------------------------------------------------
# Bilddaten erzeugen
my $image = GD::Image->newFromJpegData($BLOB);

# Bild ausgeben
$|=1;
print $cgi->header(-type=>'image/jpeg');
binmode(STDOUT);
print STDOUT $image->jpeg;

### ---------------------------------------------------

# Bild als BLOB aus Datei einlesen
my $imgfilename = "test.jpg";
$image = GD::Image->newFromJpeg($imgfilename);
$BLOB = $image->jpeg;

# SQL-Abfrage zum "Speichern" des Bildes vorbereiten
my sth = $dbh->prepare(<<"SQL");
UPDATE images SET imgdata=? WHERE images_id=?;
SQL
# SQL auführen
$sth->execute($BLOB,$imageid);

### ---------------------------------------------------


# Datenbank schließen beim Beenden des Skripts (kannst du auch woanders machen)
END {
    $dbh->disconnect if defined($dbh);
}


//EDIT:
Ich habe keine Ahnung wie du die Tabelle und Datenbank aufgebaut hast.

Möglicherweise musst du noch
Code (perl): (dl )
$dbh->{LongReadLen}
auf einen größeren Wert setzen, falls du in der DB den Datentyp LONG für die Daten verwendest.

Und BLOBs kannst du auf verschiedene Art und Weise lesen udn schreibe wie auf http://search.cpan.org/~pythian/DBD-Oracle-1.42/li... zu sehen ist.

Bitte frage nach, wenn du nicht weißt wofür die einzelnen Programmteile sind, es ist kein fertiges Skript!
//EDIT: Kommentare erweitert + CGI-Header hinzugefügt
Last edited: 2012-04-04 17:23:34 +0200 (CEST)

View full thread Oracle-DB: Auslesen von BLOBs und speichern