Upload funzt nicht

Holla,

sieht hier bei dem Upload Script jemand auf anhieb den Fehler? Er legt zwar ne Datei an (test.gif ist hier als Konstante angegeben, ist auch gewollt so) aber sie ist 0 Byte groß.

#!/usr/bin/perl

use CGI qw/:standard/;
$q = new CGI;

$filename = $q-\>param('bild\_datei');

open(OUTFILE, "\>test.gif" || print"Fehler);
binmode OUTFILE;
while ($bytesread=read($filename,$buffer,1024))
{print OUTFILE $buffer; }
close (OUTFILE);

Der Form Tag im HTML:

Wäre Prima wenns dazu ne Lösung gibt.

Freundlichst,
der Daniel.

sieht hier bei dem Upload Script jemand auf anhieb den Fehler?
Er legt zwar ne Datei an (test.gif ist hier als Konstante
angegeben, ist auch gewollt so) aber sie ist 0 Byte groß.

#!/usr/bin/perl

use CGI qw/:standard/;
$q = new CGI;

$filename = $q->param(‚bild_datei‘);

besser so …

falls Du CGI.pm vor Version 2.47 nutzt (siehe auch unten)

my $filename = Xupload($q,‚bild_datei‘);

sonst

my $filename = $q->upload(‚bild_datei‘);

eigentlich ist filename ein Filehandle, deshalb auch diese Konstruktion

open(OUTFILE, „>test.gif“ || print"Fehler);

besser wg. Fehler in Klammerung etc.:

open(OUTFILE, „>test.gif“) || print „Fehler $!“;

binmode OUTFILE;
while ($bytesread=read($filename,$buffer,1024))
{print OUTFILE $buffer; }
close (OUTFILE);

folgende sub noch einfügen, falls Du CGI.pm vor Version 2.47 nutzt (aus CGI.pm ab Version 2.47)

sub Xupload {
my ($query,$param_name) = @_;
my $param = $query->param($param_name);
return unless $param;
return unless ref($param) && fileno($param);
return $param;
}

so nicht, lieber so:

enctype="multipart/form-data" method="post"\>

So sollte es nun funktionieren. Eventuelle Verbesserungen dazu erfährst Du wie immer aus perldoc CGI.pm :smile:

Klaus

Alles klar !
Hallo Klaus,

vielen Dank, allein von GET auf POST zu stellen war erfolgreich gewesen *freu* Da kann ich natürlich lang suchen wo im Script der Fehler ist…

Viele Grüße,
vom Daniel.