Fileupload-Beschreibung übergeben!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fileupload-Beschreibung übergeben!

    Hallo! Ich habe ein Upload-Script eingebaut, wo man die Datei von seiner Platte auswählt und eine Beschreibung zu diesem File machen kann! Nun möchte ich gerne, das diese Beschreibung in ein *.txt file geschrieben wird, das beim upload angelegt werden soll und so wie die datei heißen soll! Bsp: Downloaddatei = lustig.zip dann soll eine Textdatei mit der zugehörigen Beschreibung erstellt werden, die dann lustig.txt heißt! Geht das? Wie? Oder ist es besser, wenn ich ein *.txt file anlege und dort dann immer reinschreiben lasse, den Uploaddateinamen und dahinter die Beschreibung! was ist besser? Wie umsetzen? Danke im vorraus! Matthias
    No internationalisation, no fun.

  • #2
    mein php-Code

    OK! Ich schreib hier mal den Code meiner PHP-Datei hin! Vielleicht ist es ja dann verständlicher!

    $html .= "<TR>
    <TD WIDTH=\"25%\" BGCOLOR=\"#848200\">
    <FONT COLOR=\"#ffffff\" SIZE=\"-1\" FACE=\"Verdana\">File $num:</FONT></TD>
    <TD WIDTH=\"75%\" BGCOLOR=\"#ffffff\">
    <INPUT NAME=\"fileup$num\" TYPE=\"file\" SIZE=\"25\">
    </TD> ";
    }

    $passhtml = "<P><CENTER><TABLE BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\">
    <TR>
    <TD WIDTH=\"100%\" BGCOLOR=\"#000000\">
    <TABLE WIDTH=\"450\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"2\">
    <TR>
    <TD WIDTH=\"33%\" BGCOLOR=\"#848200\">
    <B><FONT COLOR=\"#ffffff\" SIZE=\"-1\" FACE=\"Verdana\">Beschreibung:</FONT></B></TD>
    <td rowspan=\"0\"><textarea name=\"beschreibung\" cols=\"40\" rows=\"10\">Beschreibung des Uploads</textarea></td></tr>
    <TD WIDTH=\"67%\" BGCOLOR=\"#000000\">
    </TD>
    </TR>
    </TABLE></TD>
    </TR>
    </TABLE></CENTER></P>";
    }
    echo("<FORM ENCTYPE=\"multipart/form-data\" ACTION=\"index.php3\" METHOD=\"POST\">
    <P><CENTER><B><FONT FACE=\"Verdana\">Verfügbare Dokumente</FONT></B></CENTER></P>
    <P><B><FONT FACE=\"Verdana\">"); $start_dir="./upload"; parse_dir($start_dir);
    echo("
    </FONT></B></P>
    <br>
    <P><CENTER><B><FONT FACE=\"Verdana\">Upload für Partner X</FONT></B></CENTER></P>
    <P><CENTER><TABLE WIDTH=\"170\" BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"0\">
    <TR>
    <TD WIDTH=\"100%\" BGCOLOR=\"#000000\">
    <P><CENTER><TABLE WIDTH=\"450\" BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"0\">
    <TR>
    <TD WIDTH=\"100%\" BGCOLOR=\"#000000\">
    <TABLE WIDTH=\"450\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"2\">
    <TR>
    <TD COLSPAN=\"2\" BGCOLOR=\"#848200\">
    <B><FONT COLOR=\"#ffffff\" SIZE=\"-1\" FACE=\"Verdana\">Select Files</FONT></B></TD>
    </TR>$html
    </TABLE></TD>
    </TR>
    </TR>
    </TABLE></TD>
    </TR>

    </TABLE></CENTER></P>$passhtml<P><CENTER><INPUT NAME=\"doupload\" TYPE=\"submit\" VALUE=\"Upload Files\"></CENTER></FORM>
    </BODY>
    No internationalisation, no fun.

    Kommentar


    • #3
      für die Beschreibung packst du einfach ein Textfeld (<input type="text" name="beschreibung"> oder <textarea name="beschreibung">) ins Formular.

      $num würd ich als versteckter Feld mit durchschieben, sonst kennst du die Variablen nachher nicht:
      $html .= '<input type="hidden" name="num" value="'. $num. '">';

      dann bekommst du in der index.php3 den Original-Namen der Datei mit $origname = basename(${'fileup'.$num.'_name'});.
      und kannst mit dem folgenden Code deine Datei schreiben:
      Code:
      # evtl. Punkt abschneiden; .txt anhängen:
      $punktpos = strrspn ($origname, '.');
      $fn =  (false===$punktpos
        ? $origname
        : substr ($origname, 0, $punktpos)
      ). '.txt';
      $fp = fopen ($fn, 'w');
      fputs ($fp, $beschreibung);
      fclose ($fp);
      Der temporäre Pfad der hochgeladenen Datei ist übrigens ${'fileup'.$num}

      ------

      Ach ja, da war noch ne Frage:
      Eine txt-Datei pro Upload kann schnell die Platte zumüllen.
      Dafür brauchst du dich aber nicht um Zeilenumbrüche zu kümmern.

      Also eine Mischung aus beidem: eine Datei, mehrere Zeilen pro Datei zulassen.
      Geht, wenn du die Datei mit <file="$origname"> gefolgt von htmlentites($beschreibung) oder füllst:
      Code:
      $fp = fopen('beschreibung.txt', 'a');
      fputs($fp, '<file="'.$origname.'">'."\n");
      fputs($fp, htmlentities($beschreibung)."\n");
      fclose($fp);
      auslesen geht dann mit:
      Code:
      $fp = fopen ('beschreibung.txt', 'r');
      while ($zeile = fgets($fp, 65536)
          && $zeile!='<file=".$origname.'">'."\n");
      if (!feof($fp))
      {
        echo "Bechreibung von <b>$origname</b>:<br><br>";
        while ($zeile = fgets($fp, 65536)
            && substr($zeile, 0, 7)!='<file="')
          echo "$zeile<br>";
      }
      else
        echo "Keine Beschreibung zu <b>$origname</b> gefunden";
      fclose($fp);
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Funktioniert nicht

        Ich habe nun mittlerweile drei Stunden das Web quer gelesen und keine Lösung für mein Problem gefunden. Mit $upfile_name komme ich leider nicht an den Dateinamen bzw. Pfad. Das File-Inputfeld im Formular heißt bei mir "upfile".

        Mit $_FILES oder HTTP_POST_FILES kann ich leider nicht arbeiten (PHP3).

        Kann mir jemand weiterhelfen?
        Andreas Lang
        http://www.projekt-love-it.de

        Kommentar


        • #5
          wer arbeitet noch mit php 3????????

          gibs da überhaupt schon file upload?
          mfg

          Kommentar


          • #6
            Jo, FileUpload gab´s sogar schon in PHP2/FI.

            Und vor $HTTP_POST_FILES, $_POST und $_FILES gab es $HTTP_POST_VARS (gleicher Aufbau wie $_POST, eben nur kein Superglobal)

            Ergo: $orignalname = $HTTP_POST_VARS['upfile_name']

            Das funzt in PHP 4 auch noch, solange register_long_arrays=On (php.ini)
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Vielen Dank

              Hallo Titus,

              vielen Dank für Deine Antwort, ich habe es nun hinbekommen. Ich hatte $HTTP_POST_FILES nicht unter den globals eingebunden. Deswegen konnte ich nicht drauf zugreifen.

              @Trashar
              Ich habe auf unserem Web-Server noch PHP3 installiert. Die Konfiguration ist von 99 und wie heißt es so schön: "Never touch a running system". Bisher bin ich damit gut ausgekommen, aber so langsam stoße ich an die Grenzen. Bis der Server neu aufgesetzt ist, kann ich damit noch leben. Den Server betreuen wir sozusagen eher nebenbei, ich brauche dazu also etwas Freiraum.
              Andreas Lang
              http://www.projekt-love-it.de

              Kommentar

              Lädt...
              X