Hans: Fileupload (ENCTYPE="multipart/form-data")

Hallo,

Habe ein Formular in Perl geschrieben, es werden Textfelder, Formularfelder, Checkboxen... eingelesen (funktioniert auch alles einwandfrei!).

Der einleitende <form>-Tag sah aus wie folgt:

<form name="mail" method=POST action="$cgi_www?new">

Nun wollte ich aber noch einen File-Upload in mein Skript einfügen. Nun hab ich mich mal ein bisschen schlau gemacht und habe herrausgefunden das ich "ENCTYPE="multipart/form-data" in meinem einleitenden <form>-Tag einfügen muss.

Der neue einleitende <form>-Tag sieht aus wie folgt:

<form name="mail" method=POST action="$cgi_www?new" ENCTYPE="multipart/form-data">

Nur leider wird nun nur noch die Datei hochgeladen, aber die Formularfelder werden nicht mehr übergeben.

Hat vielleicht einer von euch ne Idee woran das liegen könnte? Wäre für schnelle Hilfe sehr Dankbar!

Falls ihr noch weitere Informationen braucht, ich schreib gern noch mehr :)

Mfg Hans

  1. Hi,

    Habe ein Formular in Perl geschrieben, es werden Textfelder, Formularfelder, Checkboxen... eingelesen (funktioniert auch alles einwandfrei!).

    was hat dieses Script, was nicht auch CGI.pm hat? Abgesehen davon, dass dieses Standard-Modul mit Fileuploads, <select multiple> und jedwedem anderen Gedöns keine Probleme hat, Deines aber schon.

    <form name="mail" method=POST action="$cgi_www?new">

    Du solltest nur _entweder_ POST _oder_ GET verwenden, nicht beides parallel. Wenn Du POST einsetzt, verlege URL-Parameter in <input type="hidden">.

    Und benutze name/value-pairs, nicht stumpfen Text.

    Hat vielleicht einer von euch ne Idee woran das liegen könnte?

    Nicht ohne ein Minimum an Code. So kann ich nur raten, dass Du CGI.pm nicht einsetzt, was ich durchaus als Fehler bezeichnen möchte. Falls dem so ist, lies

    perldoc CGI

    Cheatah

    1. Du solltest nur _entweder_ POST _oder_ GET verwenden, nicht beides parallel. Wenn Du POST einsetzt, verlege URL-Parameter in <input type="hidden">.
      perldoc CGI

      Cheatah

      Hallo,

      verwende die Methode "post", hab leider keine Ahnung was du mit <input type="hidden">. meinst.

      mfg

      Hans

      1. Hi,

        verwende die Methode "post",

        das hab ich gesehen, darum der Einwand - denn die Formular-Action hat implizit die Methode GET.

        hab leider keine Ahnung was du mit <input type="hidden">. meinst.

        Nimm die GET-Parameter aus der Formular-Action raus und setze sie in versteckte Eingabefelder.

        Cheatah

        1. Hi,

          verwende die Methode "post",

          das hab ich gesehen, darum der Einwand - denn die Formular-Action hat implizit die Methode GET.

          hab leider keine Ahnung was du mit <input type="hidden">. meinst.

          Nimm die GET-Parameter aus der Formular-Action raus und setze sie in versteckte Eingabefelder.

          Cheatah

          Hallo,

          kannst du mir vielleicht n Beispiel geben? Hab selber die Lösung leider immer noch nicht gefunden ;(

          Hier einen Auszug aus meinem Skript (Das Formular wo abgesendet wird):

          <form name="mail" method=post action="$cgi_www?new">

          <table width="46%" border="0" bordercolor="#000000" bgcolor="#003366"> tr bgcolor="#003366">           <td width="28%"><font color="#FFFFFF" size="2" face="Courier New, Courier, mono">Filmname:</font></td>           <td width="5%"><font color="#FFFFFF">$x_name</font></td>           <td width="67%">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="name" size="60" value="$FM{'name'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%">             <p><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Filmbeschreibung:</font></p>             <p><font face="Courier New, Courier, mono" size="2" color="#FFFFFF"><img src="$pic_dir/trenner.gif" border=0 width=200 height=122></font></p>           </td>           <td width="5%">             <p><font color="#FFFFFF">$x_beschreibung</font></p>             <p> </p>             <p> </p>             <p> </p>             <p> </p>           </td>           <td width="67%">             <textarea style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="beschreibung" cols="40" rows="10">$FM{'beschreibung'}</textarea>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%">             <p><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Darsteller:</font></p>             <p><font face="Courier New, Courier, mono" size="2" color="#FFFFFF"><img src="$pic_dir/trenner.gif" border=0 width=200 height=49></font></p>           </td>           <td width="5%">             <p><font color="#FFFFFF">$x_darsteller</font></p>             <p> </p>             <p> </p>           </td>           <td width="67%">             <textarea style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="darsteller" cols="40" rows="5">$FM{'darsteller'}</textarea>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">FSK:</font></td>           <td width="5%"><font color="#FFFFFF">$x_fsk</font> </td>           <td width="67%">             <select style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="fsk" size="1">               <option value="1" selected></option>      <option>bitte auswählen</option>               <option>unbeschränkt</option>               <option>ab 6 Jahre</option>               <option>ab 12 Jahre</option>               <option>ab 16 Jahre</option>               <option>ab 18 Jahre</option>             </select>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Genre:</font></td>           <td width="5%"><font color="#FFFFFF">$x_genre</font></td>           <td width="67%">             <select style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="genre" size="1">               <option selected>bitte auswählen</option>               <option>Action</option>               <option>Comedy</option>               <option>Dokumentation</option>               <option>Drama</option>               <option>Erotik</option>               <option>Hardcore</option>               <option>Horror/Splatter</option>               <option>Komödie</option>               <option>Serie</option>               <option>Skuriles</option>               <option>Spielfilm</option>               <option>Sport</option>               <option>Thriller</option>               <option>Zeichentrick</option>             </select>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Qually</font></td>           <td width="5%"><font color="#FFFFFF">$x_bild</font></td>           <td width="67%">             <select style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="qually" size="1">               <option selected>bitte auswählen</option>               <option>sehr gut</option>               <option>gut</option>               <option>befriedigend</option>               <option>ausreichend</option>               <option>mangelhaft</option>               <option>ungenügend</option>             </select>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font face="Courier New, Courier, mono" size="2" color="#FFFFFF">Dateiformat</font></td>           <td width="5%"><font color="#FFFFFF">$x_datei</font></td>           <td width="67%">             <select style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="dformat"  size="1">               <option selected>bitte auswählen</option>               <option>DiviX</option>               <option>mpeg</option>               <option>VCD</option>               <option>SVCD</option>               <option>ASF</option>               <option>AngelIP</option>               <option>andere</option>             </select>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Tonformat:</font></td>           <td width="5%"><font color="#FFFFFF">$x_ton</font></td>           <td width="67%">             <select style="background-color: #999999; color: #660000; border: 1 solid #7496B9" name="sformat" size="1">               <option selected>bitte auswählen</option>               <option>AC3</option>               <option>mp3</option>               <option>sonstige</option>             </select>           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">Größe             des Films (in MB):</font></td>           <td width="5%"><font color="#FFFFFF">$x_mb</font></td>           <td width="67%">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="mb" size="40" value="$FM{'mb'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">edonkey-Link             CD1:</font></td>           <td width="5%"><font color="#FFFFFF">$x_link1</font></td>           <td width="67%">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="link1" size="40"  value="$FM{'link1'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">edonkey-Link             CD2*:</font></td>           <td width="5%"><font color="#FFFFFF"></font></td>           <td width="67%">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="link2" size="40" value="$FM{'link2'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%" height="2"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">edonkey-Link             CD3*:</font></td>           <td width="5%" height="2"><font color="#FFFFFF"></font></td>           <td width="67%" height="2">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="link3" size="40" value="$FM{'link3'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%" height="2"><font size="2" face="Courier New, Courier, mono" color="#FFFFFF">edonkey-Link             CD4*:</font></td>           <td width="5%" height="2"><font color="#FFFFFF"></font></td>           <td width="67%" height="2">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="text" name="link4" size="40" value="$FM{'link4'}">           </td>         </tr>         <tr bgcolor="#003366">           <td width="28%" height="2">             <div align="left"><font face="Courier New, Courier, mono" size="2" color="#FFFFFF">Film               Cover </font> </div>           </td>           <td width="5%" height="2">             <div align="left"><font color="#FFFFFF">$x_cover</font></div>           </td>           <td width="67%" height="2">             <input style="background-color: #999999; color: #660000; border: 1 solid #7496B9" type="file" name="myfile" size="39" >

          </td>         </tr>         <tr bgcolor="#003366">           <td width="28%" height="2">             <div align="right">               <input type="submit" name="abschicken" value="melden!">             </div>           </td>           <td width="5%" height="2">             <!--submit-->           </td>           <td width="67%" height="2">             <input type="reset" name="Zurücksetzen" value="Eingabe löschen">           </td>         </tr>       </table>


          ende

          Besten Dank!

          Mfg

          Hans

          1. hab leider keine Ahnung was du mit <input type="hidden">. meinst.
            Nimm die GET-Parameter aus der Formular-Action raus und setze sie in versteckte Eingabefelder.
            kannst du mir vielleicht n Beispiel geben? Hab selber die Lösung leider immer noch nicht gefunden ;(

            http://selfhtml.teamone.de/html/formulare/versteckte.htm#definieren