File-Upload Problem seit neuer Perl-Version

Hallo NG,

habe eine neuere Perl-Version v5.8.6 installiert, seit dem habe ich Probleme
mit dem Fle-Upload das vorher ohne Probleme ging:

....
while($bytesread = read($import_file, $buffer, 1024)) {
$bytes_sum += $bytesread;
$file .= $buffer;
$sum_kb = sprintf("%.0f", ($bytes_sum / 1024));
if ($sum_kb > $max_kb) {
last;
}
}
....

bekomme immer den Fehler: read() on unopened filehandle at E:\...
Ob auf lokalem Server oder Webserver, beide das gleiche Problem bei gleicher
Perl-Version.


Gruß

Joachim
j-w-b [ Mo, 14 August 2006 13:19 ] [ ID #1430183 ]

Re: File-Upload Problem seit neuer Perl-Version

* Joachim Böcker [2006-08-14]:

Hallo Joachim,

> habe eine neuere Perl-Version v5.8.6 installiert, seit dem habe ich Probleme
> mit dem Fle-Upload das vorher ohne Probleme ging:
> while($bytesread = read($import_file, $buffer, 1024)) {
> bekomme immer den Fehler: read() on unopened filehandle at E:\...

interessant ist hier eigentlich nur wo $import_file herkommt und was du
dazwischen damit machst. Vorzugsweise sollte das nur:

use CGI ':standard'; # vermute ich jetzt einfach mal
my $import_file= upload('uploaded_file'); # oder wie das Feld heisst

sein.

Gruß
Christian

--
Jeder macht, was er will; keiner macht, was er soll -
aber alle machen mit.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas [ Mo, 14 August 2006 14:09 ] [ ID #1430184 ]

Re: File-Upload Problem seit neuer Perl-Version

> Hallo Joachim,
>
>> habe eine neuere Perl-Version v5.8.6 installiert, seit dem habe ich
>> Probleme
>> mit dem Fle-Upload das vorher ohne Probleme ging:
>> while($bytesread = read($import_file, $buffer, 1024)) {
>> bekomme immer den Fehler: read() on unopened filehandle at E:\...
>
> interessant ist hier eigentlich nur wo $import_file herkommt und was du
> dazwischen damit machst. Vorzugsweise sollte das nur:
>
> use CGI ':standard'; # vermute ich jetzt einfach mal
> my $import_file= upload('uploaded_file'); # oder wie das Feld heisst

Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad hole!
Fakt ist es ging vorher mit dem älteren Perl, da muß sich doch was geändert
haben :-(

....
my $import_file = $$client_data_hash_ref{'import_datei'};

if($import_file eq "") {
$template_hash{$ERROR_TAG} = $view->get_main_error_frame("Fehler: Kein
Dateiname angegeben!");
}elsif($import_file !~ /^[0-9A-Za-z\.\-_\\ :]+?\.([a-z]{3})$/) {
$template_hash{$ERROR_TAG} = $view->get_main_error_frame("Fehler:
Ungültiger Dateiname oder Pfad!");
}else{
my $extension = $1;
if($extension ne "csv"){
$template_hash{$ERROR_TAG} = $view->get_main_error_frame("Fehler:
Ungültige Import-Datei!");
}else{
my $bytesread = undef;
my $buffer = undef;
my $bytes_sum = 0;
my $file = "";
my $sum_kb = 0;

# Datei in den Binär-Modus schalten - nur auf Entwicklungsumgebung
Windows :-(
binmode $import_file;

while($bytesread = read($import_file, $buffer, 1024)) {
#print ".";
$bytes_sum += $bytesread;
$file .= $buffer;
$sum_kb = sprintf("%.0f", ($bytes_sum / 1024));
if ($sum_kb > $max_kb) {
last;
}
}

if ($sum_kb > $max_kb) {
$template_hash{$ERROR_TAG} = $view->get_main_error_frame("Fehler: Datei
zu groß, maximal $max_kb KB!");
}elsif ($sum_kb > 0) {
....
j-w-b [ Mo, 14 August 2006 19:01 ] [ ID #1430189 ]

Re: File-Upload Problem seit neuer Perl-Version

* Joachim Böcker [2006-08-14]:

Hallo Joachim,

> > use CGI ':standard'; # vermute ich jetzt einfach mal
> > my $import_file= upload('uploaded_file'); # oder wie das Feld heisst
> Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad
> hole! Fakt ist es ging vorher mit dem älteren Perl, da muß sich doch
> was geändert haben :-(

das mag sein.

> my $import_file = $$client_data_hash_ref{'import_datei'};

Womit wir immer noch nicht wissen wo die Daten denn nun herkommen. Nimm
einfach das CGI-Modul wie in der Dokumentation beschrieben und es wird
gehen.

Gruß
Christian

--
Es ist ganz leicht, sich das Rauchen abzugewöhnen;
ich habe es schon hundert Mal geschafft.
(Mark Twain, am. Schriftsteller, 1835-1903)
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas [ Mo, 14 August 2006 20:50 ] [ ID #1430190 ]

Re: File-Upload Problem seit neuer Perl-Version

>> > use CGI ':standard'; # vermute ich jetzt einfach mal
>> > my $import_file= upload('uploaded_file'); # oder wie das Feld heisst
>> Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad
>> hole! Fakt ist es ging vorher mit dem älteren Perl, da muß sich doch
>> was geändert haben :-(
>
> das mag sein.
>
>> my $import_file = $$client_data_hash_ref{'import_datei'};
>
> Womit wir immer noch nicht wissen wo die Daten denn nun herkommen. Nimm
> einfach das CGI-Modul wie in der Dokumentation beschrieben und es wird
> gehen.

Bingo, so gehts! 1000 Dank
j-w-b [ Mo, 14 August 2006 23:01 ] [ ID #1430191 ]

Re: File-Upload Problem seit neuer Perl-Version

On Mon, 14 Aug 2006 19:01:51 +0200, Joachim Böcker wrote:
>> Hallo Joachim,
>>> habe eine neuere Perl-Version v5.8.6 installiert, seit dem habe ich
>>> Probleme
>>> mit dem Fle-Upload das vorher ohne Probleme ging:
>>> while($bytesread = read($import_file, $buffer, 1024)) {
>>> bekomme immer den Fehler: read() on unopened filehandle at E:\...
[...]
> Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad hole!

read erwartet aber keine Pfad, sondern einen Filehandle.

hp

--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp [at] hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd
hjp-usenet2 [ Di, 15 August 2006 10:25 ] [ ID #1431663 ]

Re: File-Upload Problem seit neuer Perl-Version

* Peter J. Holzer [2006-08-15]:

Hallo Peter,

> > Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad hole!
> read erwartet aber keine Pfad, sondern einen Filehandle.

das ist vermutlich ein vom CGI-Modul stammendes Objekt und kann damit
beides sein (wahrscheinlich geht diese Dualität aber irgendwo im Code
des OPs verloren).

Gruß
Christian

--
Früher habe ich mich vor der Arbeit gedrückt,
heute könnte ich stundenlang zusehen.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker
Christian Lackas [ Mi, 16 August 2006 02:23 ] [ ID #1433195 ]

Re: File-Upload Problem seit neuer Perl-Version

On Wed, 16 Aug 2006 02:23:32 +0200, Christian Lackas wrote:
> * Peter J. Holzer [2006-08-15]:
>> > Hier der komplettere Code, ist doch aber egal wie ich mir den Pfad hole!
>> read erwartet aber keine Pfad, sondern einen Filehandle.
>
> das ist vermutlich ein vom CGI-Modul stammendes Objekt

Vielleicht, vielleicht auch nicht. Den entsprechenden Code hat der OP ja
nie gepostet, und nachdem es plötzlich funktioniert hat, nachdem er es
"so wie in der Dokumentation beschrieben" gemacht hat, liegt der
Verdacht nahe, dass er irgendwas anders gemacht hat. Insbesondere, wenn
ihm der Unterschied zwischen einem Pfad und einem Filehandle nicht klar
ist.

> und kann damit beides sein

So ist es.

hp

--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp [at] hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd
hjp-usenet2 [ Fr, 18 August 2006 20:53 ] [ ID #1436726 ]
Perl » de.comp.lang.perl.misc » File-Upload Problem seit neuer Perl-Version

Vorheriges Thema: Wie CSV importieren und DBM erzeugen?
Nächstes Thema: Keinen Fehlermeldung wenn Funktion nicht vorhanden?