Upload File mit post-Methode
sergej
- perl
0 Cheatah0 roman lenz
Hollo Freunde,
Bin am Verzweifeln, finde einfach den Fehler nicht!
Hab schon sämtliche upload scripts ausprobiert und durchexperementiert.
Die Ausgabe funktioniert wunderbar, doch die Eingabe nicht!
methode=post, aber diese überträgt die Daten nicht?????
und das <INPUT NAME="act" TYPE="hidden" VALUE=1> wird auch nicht übertragen????
Es gibt auch keine Fehlermeldungen!
Wie kann ich Fehlermeldungen implementieren, dass ich dann auch nachvolziehen kann an was es liegt?
Rechte vom Verzeichnis wo die Doc-files gespeichert werden: 777
Rechte vom upload.pl: 755
upload.pl (abgespekt und angepasst an SELFHTML upload-beispiel)
-----------------------------------------------------
#!/usr/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $cgi = new CGI;
my $file = $cgi->param('tfile');
my $act = $cgi->param('act');
my $Verzeichnis = "../../files/doc/";
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!";
my @Eintraege = readdir(DIR);
closedir(DIR);
#**************************************************************
# MAIN
#**************************************************************
print "Content-type: text/html\n\n";
print "<html><body style="border: 1px solid black; margin:20px;font-family:Verdana;font-size:11px;background-color:#DFD; color:#000000;" >\n";
if($act){ EINGABE(); } # siehe <input->hidden->value=1>
else{ AUSGABE(); }
#**************************************************************
# Ausgabe
#**************************************************************
sub AUSGABE
{
print "<table align=center>\n<tr><td>\n";
foreach(@Eintraege) {
if($_ =~ /.+.doc/) {
print "<a href="".$Verzeichnis."$_" align="center">$_</a><br>\n";}
}
print "</td></tr></table>\n<a href="javascript:history.back()">zurück</a>\n</body></html>\n";
print <<"ENDE";
<FORM method=POST ACTION="upload.pl" enctype="multipart/form-data" NAME="upload">
<b class="fun">Doc-datei uploaden: </b><br>
<INPUT NAME="act" TYPE="hidden" VALUE="1">
<input type="file" name="tfile" accept="text/*" maxlength="2097152" SIZE="75">
<br><INPUT TYPE="submit" VALUE="uploaden"><br>
</FORM>
<br>
</body></html>
ENDE
}
#**************************************************************
# Eingabe
#**************************************************************
sub EINGABE
{
my $fname = $file;
$fname =~ s/.*\//g; # -> Lösche alles vor "" -> E:\desktop\text.txt -> text.txt
print "$file-$act-$fname<br>"; # zur kontrolle
open DAT,">".$Verzeichnis.$fname , or die 'Error processing file: ',$!;
binmode $file;
binmode DAT;
while(read($file,my $data,1024)) {
print DAT $data;
}
close DAT;
print "<p>Die Datei $fname wurde erfolgreich auf dem Server gespeichert.</p>\n";
print "</body></html>\n";
}
-----------------------------------------------------
Danke für jede Hilfe,
Gruß Sergej
Hi,
Die Ausgabe funktioniert wunderbar, doch die Eingabe nicht!
"funktioniert nicht" ist keine Fehlerbeschreibung.
Wie kann ich Fehlermeldungen implementieren, dass ich dann auch nachvolziehen kann an was es liegt?
Debug-Ausgaben würden vorerst reichen. Die machst Du mit 'print'. Kenntnisse über die Grundlagen von CGI (und selbstverständlich Perl) setze ich voraus.
Cheatah
hi hi
bei mir läuft dein script :-)
ich hab zwei sachen geändert
#!d:\perl\wieauch immer -w
my $Verzeichnis = "./";
ich glaube das dir das zwar nicht direkt hilft aber wer weis
bis bis roman