sergej: Upload File mit post-Methode

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

  1. 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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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