Thread Oracle-DB: Auslesen von BLOBs und speichern
(16 answers)
Opened by provisoft at 2012-04-04 16:25
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) |