[Roma.pm] domanda

Flavio Poletti polettix at gmail.com
Tue Sep 15 17:02:48 PDT 2009


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.


2009/9/16 <umbertobernardelli at live.it>

>
>
>  *From:* Flavio Poletti <polettix at gmail.com>
> *Sent:* Sunday, September 13, 2009 12:21 PM
> *To:* roma at pm.org
> *Subject:* Re: [Roma.pm] domanda
>
> #!/usr/bin/perl -w
> use warnings;
> use CGI qw( :standard );
> use DBI;
> use CGI;
> my $myfile = "000036.png";
> #my $myfile = "picture.png";
> #my $dbname = "MyDatabase";
> my $dbname = "vestiario";
> print header,
>       start_html(-title => "vesto");
> my $dbh = DBI->connect("dbi:mysql:database=$dbname") || die "Cannot open
> db";
> open MYFILE, $myfile  or die "Cannot open file";
> my $data;
> while (<MYFILE>) {
>         $data .= $_;
>         }
> close MYFILE;
> my $sql = "INSERT INTO Immagine (Image) VALUES (?)";
> my $sth = $dbh->prepare($sql);
> my $numrows = $sth->execute($data);
> $sth->finish;
> $dbh->disconnect;
> print br;
> print "OK load",
>            end_html;
>
> Ho usato nel MySQL  la tabella con tipo 'longblob' . Ho fatto diversi
> tentativi:
> scopo carico $myfile nella tabella con tipo blob.
> DBI funziona, con Mysql funziona, solo con il tipo blob ho delle
> difficoltà.
> **********************************************************************
>
>
> Cosa hai provato fino ad ora? Suggerirei di partire da quel che hai fatto
> per capire quali siano state le difficoltà.
>
> Aspettiamo.
>
> 2009/9/13 <umbertobernardelli at live.it>
>
>> cerco un aiuto
>> ho alcune difficoltà a caricare immagini su MySQL con il perl licenza
>> free.
>> Qualcuno potrebbe inviarmi un esempio completo?
>> aspetto
>>
>>
>>
>> _______________________________________________
>> Roma mailing list
>> Roma at pm.org
>> http://mail.pm.org/mailman/listinfo/roma
>>
>
>  ------------------------------
>
> _______________________________________________
> Roma mailing list
> Roma at pm.org
> http://mail.pm.org/mailman/listinfo/roma
>
>
> _______________________________________________
> Roma mailing list
> Roma at pm.org
> http://mail.pm.org/mailman/listinfo/roma
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/roma/attachments/20090916/83f16eab/attachment.html>


More information about the Roma mailing list