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

GwenDragon
 2012-04-05 08:57
#157256 #157256
User since
2005-01-17
14749 articles
Admin1
[Homepage]
user image
Hmm. Es geht auch ohne GD, ja.
Wenn du die Bilder binär wie du sie binär bekommst, als BLOB speicherst. Du willst anscheined die Bilder nicht noch bearbeiten.

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 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;

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

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

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

# Bild als BLOB aus Datei einlesen
my $imgfilename = "test.jpg";
$if (open my $fh, '<', $imgfilename) {
  binmode($fh); 
  local $/ = undef; # Slurp mode aktivieren
  $BLOB = <$fh>; # Daten komplett in einem Rutsch einlesen
  close $fh;
}
# 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);
}


Editiert von GwenDragon: Fehler korrigiert
Last edited: 2012-04-05 09:02:52 +0200 (CEST)

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