Upload-Script

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

  • Upload-Script

    Hallo,

    mit folgendem Script klappt der File-Upload soweit ganz gut. Wie Ihr seht kann man die upzuloadende Datei mittels Formular auswählen.
    Nun möchte ich das Script aber so ändern, daß die upzuloadende Datei fix ist d. h. also nicht mehr vom User frei wählbar. Erschwerend kommt hinzu, daß sich der Dateiname täglich ändert (z.B. Heute: Test081102.csv -> Morgen: Test091102.csv). Gibt es vielleicht so was wie "ftp_put *.csv" ???
    PHP-Code:
    <?php
    include("connect.inc.php");
     
    $max_file_groesse 1024000// In Bytes 1024 bytes = 1kbyte, 1024kbyte = 1mbyte
    $userfile_name "niv_dritt.csv"// Zieldateiname

    if (!$file)
    {
    ?>
    <form method="POST" enctype="multipart/form-data" 
    <?php echo "action=\"$PHP_SELF?file=1\">"
    ?>
     <p>&nbsp;</p>
      <p><input type="file" name="userfile" size="40"></p>
      <p><input type="submit" value="Upload" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
    </form>
    <?php
    }
    if (
    $file==1)
    {
        
    $dateigroesse filesize($userfile);
    if (
    $max_file_groesse <= $dateigroesse)
    {
        echo 
    "Die Datei ist zu gro&szlig;. <br><br>Maximalgr&ouml;&szlig;e: $max_file_groesse Bytes<br><br>Die Datei die hochgeladen werden soll ist $dateigroesse Bytes gro&szlig;.<br>";
    exit;
    }
        
    $connID = @ftp_connect("$ftpserver");
        
    $login_result = @ftp_login($connID"$mysqluser""$mysqlpasswd");
    if ((!
    $connID) || (!$login_result)) {
        echo 
    "FTP Verbindung konnte nicht hergestellt werden !<br>";
        die;
    } else {
        echo 
    "FTP Verbindung hergestellt ...<br><br>";
    }
    // upload
        
    @ftp_chdir($connID"$pfad");
        
    $upload = @ftp_put($connID$userfile_name$userfileFTP_ASCII);
    // Uploadüberprüfung
    if (!$upload) {
        echo 
    "Upload fehlgeschlagen !<br><br>";
    } else {
        echo 
    "Upload erfolgreich !<br><br>";
    }
        @
    ftp_quit($conn_ID);
        echo 
    "FTP Verbindung wurde geschlossen !<br>";
    }
    ?>
    [EDIT by TobiaZ]
    Habs mal in PHP-Tags gesetzt.

  • #2
    Hier gibt 's doch so viel fähige Leute !
    Ich versteh' nicht, warum mir hier niemand helfen "will" ???
    Allen anderen hilft man doch auch !

    Kommentar


    • #3
      Vielleicht weil dein Code so unübersichtlich ist. Es gibt ganz oben extra n Thread zu dem Thema...

      Kommentar


      • #4
        erm, ich denk sowas kannst du nicht vorgeben ..
        es sei denn du weisst den genauen pfad wo sich die datei befindet .. dann gings

        einfach mit date() den dateinamen zusammenbasteln und als value wert eintragen .. habs nie probiert, aber warum sollte das so nicht klappen ?
        mfg,
        [color=#0080c0]Coragon[/color]

        Kommentar


        • #5
          So wir CR das gesagt hat, wäre es machbar. Allerdings hast du bei einem Form-Field des Typs "FILE" immer einen "Durchsuchen"-Butten. Dadurch kann jeder die Datei ändern und auch andere Files hochladen.

          Um das zu verhindern kannst du dir höchstens den Dateinamen angucken, ihn mit deinem generierten Namen (siehe CR) vergleichen und entscheiden, obs hochgeladen wird oder nicht.

          Kommentar


          • #6
            Vielleicht hab' ich mich nicht ganz klar ausgedrückt !
            Ich möchte eigentlich nur eine Datei aus immer demselben Verzeichnis (F:\Eigene Dateien\Preise\Preise111102.csv) per "Knopfdruck" oder einfach durch Aufrufen eines PHP-Scriptes per FTP auf den Server übertragen. Im Quellverzeichnis befindet sich also immer nur eine einzige CSV-Datei, die jedoch jeden Tag anders heißt (entsprechend dem aktuellen Datum).
            Das muß also garnichts mit einem Formular zu tun haben ! Mein Hauptproblem ist also der sich tägliche ändernde Dateiname. Aber vielleicht ist das ja für euch gar kein Problem ???

            Kommentar


            • #7
              Vielleicht hab ich mich ja auch falsch ausgedrückt , hab dich schon verstanden.

              Wie willst du das Script denn auf den Server holen wenn nicht mit nem Formular (POST)???

              Meinst du, du kanns dem script einfach sagen, hol mir mal bitte, die und die Datei vom Klienten? Dann würd ich mir als erstes mal deine System- un PW-Dateien holen.

              Ach so, ein "Knopfdruck" verschickt ein Formular, ohne Form geht kein Button!

              Wie du den Dateinamen generieren kannst hat der freundliche DR ja schon erläutet.

              Kommentar


              • #8
                Also nochmal ! Die upzuloadende Datei befindet sich auf meinem PC (Client) im Verzeichnis "F:\Eigene Dateien\Preise". Mir ist dabei völlig egal ob die Datei durch einfachen Aufruf eines PHP-Scriptes (z. B. upload.php) oder per "Button-Druck" in einem Form (es gibt ja auch "inputs" vom Typ "hidden") oder per Grafik-Button (der wiederum ein PHP-Script aufruft) auf den Server gelangt. Fest steht, daß dies über FTP geschieht (Wie bereits in meinem funkionierenden Script angedeutet; siehe oben !) Der Upload an sich ist ja auch garnicht mein Problem. Ich möchte auch keine neuen Dateinamen mittels PHP generieren.
                Um das Ganze zu vereinfachen, gehen wir einfach davon aus im o. g. Verzeichnis befindet sich eine CSV-Datei, deren Name sich täglich ändert (Warum spielt hier keine Rolle !). Damit ich nicht jeden Tag im Upload-Script den Namen der upzuloadenden Datei ändern muß, brauchte ich halt eine entsprechende Lösung. Ich möchte auch nicht mittels "file()" jedesmal die Datei suchen. Da sich im o. g. Verzeichnis immer nur eine Datei befindet, könnte man den Befehl, den ich suche auch folgendermaßen formulieren: "uploade alle CSV-Dateien !" (So ähnlich vielleicht wie man unter DOS den Befehl " copy *.csv a:\ " verwendet.).
                Vielleicht hat' ja jemand eine Idee ???

                Kommentar


                • #9
                  also, wenns nur ums datum geht:
                  $filename="Preise".date(dmy).".csv"; //bzw date(mdy) für mmttyy
                  eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                  Kommentar


                  • #10
                    Dir ist wohl nicht klar, was es für ein gewaltiges Sicherheitsloch wäre, wenn es so funktionieren würde, wie du es dir vorstellst.

                    Wie man deinen Dateinamen generiert, weißt du ja jetzt. Das spielt für uns in sofern keine Rolle, weil wir es für Popelskram hielten.

                    Ein File-Feld kannst du nicht verstecken. Das geht nur als Ersatz für normale Textfelder. Wenn du also ein Feld "hidden" nimmst, versuchst du den String (!) F:/... und nicht die Datei hochzuladen. Geht also nicht.

                    Du kannst dem User den Upload vereinfachen, indem du ein Value vorgibst. Das sollte eigentlich gehen. Wenn du das hast, braucht er zumindest nicht mehr auf "Browse" zu klicken.
                    Deine Vorstellungen mit file(), etc funktionieren nicht, weil du mit PHP NICHT auf den Clienten direkt Zugreifen kannst. Soll heißen: Client sendet Anfrage an PHP (Server) jedoch nicht umgekehrt.

                    Um dein Form automatisch abzusenden kannst du was mit JS machen, das sollte gehen.

                    Kommentar


                    • #11
                      @slarti: Dank dir ! Ist vielleicht 'ne Möglichkeit. Werde ich mal versuchen !

                      @TobiaZ: Du solltest meine Beiträge mal genauer lesen. 1.) Es geht hier nicht darum irgendeinem User irgendetwas zu ermöglichen. Es geht hier nur um mich (Ich möchte eine Datei hochladen !).
                      2.) Ich hab' auch nicht gesagt, daß das Ganze über "file()" gemacht werden muß oder soll.
                      Anmerkung: Das mit der "Value-Vorgabe" im Zusammenhang mit file() wird von den neueren Browsern leider nicht mehr unterstützt. Hab' ich auch schon dran gedacht; war wohl früher noch möglich.

                      P.S: Nichts für Ungut, trotzdem Danke für deine Mühe !

                      Kommentar

                      Lädt...
                      X