Jeremias: File upload

Hallo, der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht, obwohl es selfhtml entnommen wurde.

Der Script ist unter http://www.hirony.net/cgi-bin/test/upload.cgi

zu erreichen.

Liegt es an den Browser Einstellungen oder am Script oder wie, wo, was ?

Gruss Jeremias

#!/usr/bin/perl

use CGI; # Modul fuer CGI-Programme

my $cgi = new CGI; # neues Objekt erstellen

Content-type fuer die Ausgabe

print $cgi->header(-type => 'text/html');

die datei-daten holen

my $file = $cgi->param("myfile");

Dateien in den Binaer-Modus schalten

binmode $file;

my $data;
read $file,$data,25000;

$l=length($data);

print <<"HTML";
<html>
<head>
<title>Fileupload</title>
</head>
<body bgcolor="#FFFFFF">
<form action=upload.cgi method=post>
File <input type=file size=40 name=myfile>
<br><input type=submit value='ab die luzi'>
</form>
<p>
Dateiname = $file
<br>Die alte Datei war $l Bytes lang

</body>
</html>
HTML
;

  1. Hi Jeremias!

    Hallo, der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht

    Mein Oma läuft auch nicht mehr. Aber bei ihr kann ich mir sicher sein, dass es am Alter liegt.

    Bei deiner Fehlerbeschreibung wird es schwierig zu helfen.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hi Jeremias!

      Hallo, der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht

      Mein Oma läuft auch nicht mehr. Aber bei ihr kann ich mir sicher sein, dass es am Alter liegt.

      Bei deiner Fehlerbeschreibung wird es schwierig zu helfen.

      MfG H☼psel

      Hallo Hopsel,

      Nun, darum habe ich ja extra den script eingestellt und auf hirony als .cgi hinterlegt.

      Es wird die ausgesuchte Datei nie hochgeladen (Anzahl Bytes immer gleich 0)

      Gruss Jeremias

  2. Hallo, der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht, obwohl es selfhtml entnommen wurde.

    Der Script ist unter http://www.hirony.net/cgi-bin/test/upload.cgi

    zu erreichen.

    Liegt es an den Browser Einstellungen oder am Script oder wie, wo, was ?

    Hi,
    hast Du Schreibrechte für wwwrun (bzw. Apache-User) in dem Verzeichnis?

    Gruß
    Reiner

    1. Hallo, der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht, obwohl es selfhtml entnommen wurde.

      Der Script ist unter http://www.hirony.net/cgi-bin/test/upload.cgi

      zu erreichen.

      Liegt es an den Browser Einstellungen oder am Script oder wie, wo, was ?

      Hi,
      hast Du Schreibrechte für wwwrun (bzw. Apache-User) in dem Verzeichnis?

      Gruß
      Reiner

      Hi Reiner,

      Ja habe ich. Aber das spielt keine Rolle, da das script ja nie schreibt, die Datei nur in die Variable $data liest, und dann die Anzahl gelesen Bytes aufblendet (und die ist bei mir  halt immer 0)

      Gruss Jeremias

  3. Tag Jeremias.

    http://www.hirony.net/cgi-bin/test/upload.cgi

    Was steht im Errorlog? Im Moment bekomme ich einen Internal Server Error.

    Liegt es an den Browser Einstellungen oder am Script oder wie, wo, was ?

    Ein Upload jedenfalls macht dein Script (so, wie es hier steht) nicht (es liest zwar, aber schreibt nicht).

    Siechfred

  4. Hallo,

    der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht, obwohl es selfhtml entnommen wurde.

    Wo, bzw. welcher Version von SelfHTML wurde es entnommen?

    <html>
    <head>
    <title>Fileupload</title>
    </head>
    <body bgcolor="#FFFFFF">
    <form action=upload.cgi method=post>

    Hm, bitte lies: http://de.selfhtml.org/html/formulare/datei_upload.htm#definieren, speziell
    ---
    Beachten Sie:
    Wichtig ist, dass Sie im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren, wenn das Formular ein Element für Datei-Upload enthält.
    ---

    Dann lies: http://aktuell.de.selfhtml.org/artikel/cgiperl/file-upload/index.htm.

    viele Grüße

    Axel

    1. Beachten Sie:
      Wichtig ist, dass Sie im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren, wenn das Formular ein Element für Datei-Upload enthält.

      Dann lies: http://aktuell.de.selfhtml.org/artikel/cgiperl/file-upload/index.htm.

      Naja, wenn man schon das CGI Modul einbinden spricht eigentlich nicht dagegen es auch zu nutzen.

      die Funktion CGI::start_multipart_form() existiert.

      Struppi.

    2. !!! KLASSE !!!

      der folgende Script bzw. das Zusammenspiel Script/Html läuft nicht, obwohl es selfhtml entnommen wurde.
      Wo, bzw. welcher Version von SelfHTML wurde es entnommen?

      Na ja, den html-teil habe ich selbst eingebaut (fälschlicherweise)

      <form action=upload.cgi method=post>
      Hm, bitte lies: http://de.selfhtml.org/html/formulare/datei_upload.htm#definieren, speziell


      Beachten Sie:
      Wichtig ist, dass Sie im einleitenden <form>-Tag die Angabe enctype="multipart/form-data" notieren, wenn das Formular ein Element für Datei-Upload enthält.

      Dann lies: http://aktuell.de.selfhtml.org/artikel/cgiperl/file-upload/index.htm.

      viele Grüße

      Axel

      Danke für den Hinweis ... er war goldrichtig, das war der Punkt an dem es scheiterte. Jetzt eingebaut und : läuft !

      Gruss Jeremias

  5. #!/usr/bin/perl

    use CGI; # Modul fuer CGI-Programme

    Warnungen und use strict sollten zumindest in der Entwicklungsphase immer eingeschaltet und eingebunden werden.

    my $cgi = new CGI; # neues Objekt erstellen

    Content-type fuer die Ausgabe

    print $cgi->header(-type => 'text/html');

    die datei-daten holen

    my $file = $cgi->param("myfile");

    Dateien in den Binaer-Modus schalten

    Bis hierhin nutzt du das CGI Modul um dann:

    print <<"HTML";
    <html>
    <head>
    <title>Fileupload</title>
    </head>
    <body bgcolor="#FFFFFF">
    <form action=upload.cgi method=post>
    File <input type=file size=40 name=myfile>
    <br><input type=submit value='ab die luzi'>
    </form>
    <p>
    Dateiname = $file
    <br>Die alte Datei war $l Bytes lang

    </body>
    </html>
    HTML
    ;

    die wieder alles von zusammen zubasteln. Das CGI Modul bietet genau dafür Funktionen an dass du auf HTML code in deinem Perl Skript fast komplett verzichten kannst.

    print $cgi->start_html(-title => 'Fileupload', -bgcolor => '#ffffff'),
    $cgi->start_multipart_form(-action => 'upload.cgi'),
    $cgi->p(
    'File:' . $cgi->filefield(-name => 'myfile')
    . '<br>'
    . $cgi->submit( -value => 'ab die luzi')
    ),
    $cgi->end_form(),
    $cgi->p(
    "Dateiname = $file<br>Die alte Datei war $l Bytes lang"
    ),
    $cgi->end_html()
    ;

    Struppi.