Perl: richtiges speichern eines binären Uploads

Ich möchte gerne ein binäres File (bilder etc) auf den webserver uploaden.
Dazu läuft folgender Code (file_upload.pl)

if ($file = param('filename')) {
 @outf=split(/\\/,$file);
 $outfile=$outf[scalar @outf-1];

 my($lines,$words,$characters,@words) = (0,0,0,0);
 open OUTF, "\> $outfile";
 while () {print OUTF chomp($\_);}
 close OUTF;
 close $file;
}

Das klappt bei Textdateien auch wunderbar, bei Binaries nicht.
Was mache ich falsch?

cu, holli

das folgende Programmstück benutzt das CGI-Modul.
Dabei ist $filename=param(‚filename‘) ;
$dat=[irgendeinnamedeinerdatei]

open(DAT, „>$dat“) || die „Konnte Datei nicht schreiben“;
while () {
print DAT „$_“ ;
}

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

HalliHallo

Beim speichern des Uploads habe ich jetzt folgenden Code:

 if ($file = param('filename')) {
 @outf=split(/\\/,$file);
 $outfile=$outf[scalar @outf-1];
 open OUTF, "\> $outfile";
 while (sysread($file,$sys,1024,0)) {
 print OUTF $sys; 
 }
 close OUTF; close $file;
 }

Jetzt stimmt wenigstens die Dateigröße, Ascii-daten sind immer noch korrekt, aber trotzem werden JPGs und EXEs nicht korrekt gespeichert. Irgenwo müssen da Bits kippen.

Wer kann helfen?

cu, holli

Es

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

aber trotzem werden JPGs und EXEs nicht korrekt
gespeichert. Irgenwo müssen da Bits kippen.

Du benutzt wahrscheinlich ein archaisches System :wink: nämlich Windows. Da mußt Du den binmode setzen:

perldoc -f binmode

Cheatah