[Roma.pm] domanda

Christoph Wernli cwernli at gmail.com
Sat Sep 26 16:26:07 PDT 2009


On Sep 27, 2009, at 12:33 AM, <umbertobernardelli at live.it> wrote:
> I risultati non sono positivi

Ma... ci sono dei risultati positivi intermedi? cioè:

> ho provato con questo file.pl a caricare immagini sul database MySQL.
> #!/usr/bin/perl -w
> use warnings;
> use strict;
> use File::Slurp qw( read_file );
> use CGI qw( :standard );
> use DBI;
> # Which database and which file from the filesystem?
> my $myfile = "picture10.png";
> my $dbname = "foto";
> # Make a connection to your database
> my $dbh = DBI->connect("dbi:mysql:database=$dbname") || die "Cannot  
> open db";
>
> # Open the file
> open MYFILE, $myfile  or die "Cannot open file";
> my $data;
>
> # Read in the contents
> while (<MYFILE>) {
>         $data .= $_;
>         }
>
> close MYFILE;
>
> my $sql = "INSERT INTO fotograf (imagefoto) VALUES (?)";
> my $sth = $dbh->prepare($sql);
> my $numrows = $sth->execute($data);
>
> # We are done with the statement handle
> $sth->finish;
> # I am finished with this connection to the database
> $dbh->disconnect;

a) assumendo che lo script finisca qui: dopo averlo eseguito, trovi un  
nuovo record nella tabella?

b) assumendo che lo script non finisca qui e prosegue:
> $sql = "SELECT imagefoto FROM fotograf";
> $sth = $dbh->prepare($sql);

$dbh è stato fatto fuori ("I am finished with this connection") :-(

> $numrows = $sth->execute;
>
> open OUTPUT, ">output.png";
> my $ref = $sth->fetchrow_hashref;
> my $newdata = $$ref{'imagefoto'};
> print OUTPUT $newdata;
> close OUTPUT;
> $sth->finish;
> $dbh->disconnect;

Cheers,

-w

-- 
Yes, sometimes I have something to tell: http://viamarmorata.blogspot.com


> From: Flavio Poletti
> Sent: Thursday, September 17, 2009 8:24 AM
> To: roma at pm.org
> Subject: Re: [Roma.pm] domanda
>
> 1. non hai detto se ci sono stati risultati positivi con quanto  
> suggerito nell'email precedente
> 2. non è chiaro come *estrai* l'immagine da MySQL e come fai a dire  
> che "qualcosa non va". Ad esempio: usi un altro script in Perl? Fai  
> un accesso con qualche altro strumento/linguaggio in modo da  
> garantirti? Se usi uno script Perl posta anche quello.
> 3. ancora non ho capito di preciso *cosa* non vada
>
> 2009/9/17 <umbertobernardelli at live.it>
>
>
> From: Flavio Poletti
> Sent: Wednesday, September 16, 2009 2:02 AM
> To: roma at pm.org
> Subject: Re: [Roma.pm] domanda
>
>
> utilizzo Widows XP professional  e ho aggiunto il server IIS:
> il mio scopo è salvare l'immagine su MySQL e dopo con GD::Image fare  
> un confronto
> con un'altra immagine.
> Ciao
> ****************************************************************************
>
> Continuo a non capire quali siano le difficoltà, visto che "DBI  
> funziona, con Mysql funziona".
>
> Non vorrei che il problema fosse altrove, comunque. Su che sistema  
> ti trovi? Se Windows, la lettura del file è errata perché devi  
> impostare binmode (non fa male farlo nel caso generale, comunque).  
> Consiglio anche di utilizzare filehandle con variabili lessicali e  
> la versione a tre parametri di open(). Insomma:
>
> my $data;
> { # restringo lo scope
>    local $/; # per leggere il file tutto in una volta
>    open my $fh, '<', $myfile
>       or die "open('$myfile'): $!";
>    binmode $fh;
>    $data = <$fh>;
>    close $fh;
> }
>
> che spesso puoi trovare "riassunto" come segue:
>
> my $data = do { open my $fh, '<', $myfile or die "open(): $!";  
> binmode $fh; local $/; <$fh> };
>
>
> In questi casi è molto comodo utilizzare File::Slurp:
>
> use File::Slurp qw( read_file );
> my $data = read_file($myfile); # voilà
>
>
> In questo modo, sei sicuro che non vengano operate trasformazioni  
> sui dati in ingresso quando leggi da file.
>
> Da notare che impostando $/ ad undef (quando fai "local" per default  
> il valore inserito è proprio undef) praticamente stai dicendo che il  
> separatore dei "record d'ingresso" è non definito, per cui Perl  
> tratta l'intero file come un 'record' e te lo legge tutto in una  
> botta.
>
> Altra cosa... ma come controlli che il contenuto del blob  
> corrisponda a quello che ti aspetti?!?
>
> Ciao,
>
>     Flavio.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/roma/attachments/20090927/471b75df/attachment-0001.html>


More information about the Roma mailing list