Anzeige:
Ergebnis 1 bis 6 von 6

Thema: jpg in mysql blob Feld per Perl schreiben

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43

    Question jpg in mysql blob Feld per Perl schreiben

    Hi,

    kann mir jemand verraten, wie ich mit einem Perlscript ein jpg File in ein Blobfeld schreiben kann?

    Auslesen und in einer html Seite anzeigen habe ich hinbekommen aber beim reinschreiben muss es wohl einen Trick geben.

    mit folgendem Codeauszug habe ich es probiert:

    Code:
    $image = qq|test.jpg|; 		
    @img = `cat $image`; 		
    $dba = DBI->connect("DBI:mysql:$database:$host:$port", "$dbusername", "$dbpassword") || &x1000; 		
    $dbx = $dba->prepare("INSERT INTO $tables{'tipps'} (t_titel,t_beschreibung,bild1) VALUES('$titel','$kurzbeschreibung','@img')") || &x1000; 		
    $dbx->execute; 		
    $dbx->finish; 		
    $dba->disconnect;
    Aber so einfach scheint es nicht zu sein, denn durch das Einlesen des Bildes mit cat sind im @img wahrscheinlich Sonderzeichen enthalten, die beim Insertquery stören, oder?

    Kennt sich damit einer aus?

    Gruß
    Jan

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    versuchs mal so:

    Code:
    #!/usr/bin/perl
    
    use warnings;
    use strict;
    
    my $filename='test.jpg';
    my $imagedata;
    
    open(FH,$filename);
    binmode(FH);
    read(FH,$imagedata,-s FH);
    close(FH);
    Ich habs nicht getestet, aber in $imagedata steht jetzt jedenfalls das Bild drin...

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    und du meinst, dass ich $imagedata dann einfach beim Insertquery mit angeben kann anstatt meinem @img?

    wäre cool wenn, ich werde es heute abend ausprobieren, kanns von meiner Arbeitstelle aus leider nicht testen.

    Gruß
    Jan

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    habe das so probiert, klappt aber auch nicht

    ich bekomme folgende Fehlermeldung angezeigt:

    Code:
    DBD::mysql::st execute failed: You have an error in your SQL syntax near '$4üðdô±¶FN`´ÔÄB
                                                                                             ptlÐE}ÇËÈI' at line 1 at images.pm line 16.
    PuTTYPuTTYScalar found where operator expected at images.pm line 15, at end of line
    ich gehe davon aus, dass in der Variablen Sonderzeichen stehen, die mysql nicht abkann wie zB das ' da nur wie soll ich sowas übergeben wenn er dann mitten in meinem query aufhört?

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    habs auch gerade gemerkt...

    so gehts aber:

    Code:
    #!/usr/bin/perl 
    use strict;
    use warnings;
    use DBI;
    my $imagedata;
    
    open(FH,"test.jpg");
    binmode(FH);
    read(FH,$imagedata,-s FH);
    close(FH);
    
    my $dbh = DBI->connect("DBI:mysql:database=.....);
    my $sth = $dbh->prepare('insert into tabelle (bild) values (?)');
    $sth->execute($imagedata) or die $!;
    Alternativ zu den Platzhaltern kann man glaubich auch DBI->quote() benutzen...

    hth,

    ~michael

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.05.2002
    Beiträge
    43
    aha, das werd ich gleich heute abend testen

    Gruß
    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •