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

GwenDragon
 2012-04-05 12:44
#157267 #157267
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Code (perl): (dl )
1
2
3
4
5
# Bild ausgeben
$|=1;
print $cgi->header(-type=>"image/jpeg",-charset=>"");
binmode(STDOUT);
#print STDOUT $BLOB;

Damit gibst du NUR das Bild aus.

Wenn ich das nachfolgende sehe, denke ich, du willst das Bild in HTML einbinden?
Code (perl): (dl )
print "<p align='left'><img src=$BLOB></p>";
Im Attribut src muss aber eine URL stehen, keine binären Daten!

Also musst du die Daten auch mit eigenen Skript ausgeben, sodass der Browser das Bild auslesen kann.

Das ginge ungefähr so als Skript getpic.pl:
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
my $cgi = CGI->new;

my $bildid = $cgi->param('picid');

if (defined($bildid) and $bildid =~ /^\d+$/) {    
        $sqlStmtSel = "SELECT DATA 
                        FROM BINARY_DATA
                        WHERE ID = ?";
                                
        $dbhsrc->{LongReadLen}=150000000;  # Make sure buffer is big enough for BLOB
        $stmtSel = $dbhsrc->prepare($sqlStmtSel) || die "\nPrepare error:$DBI::errstr\n";       
        $stmtSel = $dbhsrc->execute($bildid) || die "\nPrepare error:$DBI::errstr\n";

        # Daten des BLOB lesen
        my @data = $stmtSel->fetchrow_array;
        my $BLOB = shift @data;
 
        if ($BLOB) {
                # Bild ausgeben
                $|=1;
                print $cgi->header(-type=>"image/jpeg",-charset=>"");
                binmode(STDOUT);
                print STDOUT $BLOB;
        }
}


Das Skript muss dann so bei einem Bild ins HTML eingebunden werden:
Code: (dl )
<img src="/cgi-bin/getpic.pl?picid=12345">

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