File-Upload

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

  • File-Upload

    Hiho!
    Ich habe ein Problem und da dachte ich, passe ich gut hier rein. Egal, zum Thema. Ich habe ein Script geschrieben, das es ermöglichen soll, eine Grafik in ein Verzeichnis auf meiner Website hochzuladen. Ich probierte es sowohl mit einem FTP-Transfer (--enable-ftp ist gegeben, FTP-Verbindung funktionierte) als auch mit copy() versucht. Das Problem war nicht die Methode, sondern einfach, dass die lokale Datei nicht gefunden wird!

    Warning: Unable to open 'C:\map.jpg' for reading: No such file or directory ...

    Woran liegt das? Wäre wichtig!!!
    Danke schonma...

    LorGG

  • #2
    Poste mal dein Skript, nur anhand dieser Fehlermeldung läßt sich nicht viel sagen. Vermutlich greifst du beim Kopieren auf ein falschen Filenamen zu -> die Quelle nach dem Upload ist eigentlich in einem temporären PHP-Verzeichnis und "stirbt" nach Beenden des Skriptes. Du mußt also diese Temp.-Datei kopieren -> wenn dein Formular ein File-Input-Feld mit Namen test hat, dann kannst du im Folgeskript darauf mit $test_size, $test_name etc. zugreifen.

    Kommentar


    • #3
      Aber es kommt ja gar nicht erst zu einem upload. Er versucht die Datei lokal zu öffnen, bringt dann die meldung, er fände sie nicht...
      geht das nicht mit copy($test,"[root]/text.gif") ???

      Kommentar


      • #4
        Moment mal, was willst du eigentlich machen???

        Du willst doch sicher von deinem lokalen Rechner (oder anderer User) ein File auf den Server hochladen, oder??

        Das geht am Besten mit einem Formular:

        <form name="upload" action="folgeskript.php3" method="post" target="_self" enctype="multipart/form-data">
        <input type="file" name="datei1">
        </form>

        im folgenden Skript folgeskript.php3 kannst du dann so darauf zu greifen:

        <?
        if ($datei1_size>0) { // erst mal schauen, ob was da ist
        $src_path=$datei1; // hier steht drin, wo PHP die Temp.Datei hat
        $dest_path="/pfad/".$datei1_name;
        $copy=copy($src_path,$dest_path);
        }

        so, und nun hast du eine gleichlautende Datei im Zielverzeichnis.

        Falls du was anderes willst, mußt du dich mal genauer erklären. Von wo nach wo usw....

        Kommentar


        • #5
          Immerhin, es gibt keine Fehlermeldung mehr...
          aber die Datei ist nicht im Verzeichnis.
          hmm, woran liegt das??
          ich kann doch beim copy befehl als ziel am ende auch einen anderen dateinamen wählen, so dass es umbenannt wird, oder??

          Kommentar


          • #6
            ja, kannst du.

            Du kannst auch mit

            if (file_exists($dest_path)) $dest_path = "/pfad/".$ganzanderername;

            prüfen, ob das File schon existiert und dann nicht überschreiben, sondern nochmal anders nennen.

            Für richtiges Kopieren schaust du am Besten so nach:

            if ($copy==false) echo "Nicht geklappt"; else echo "Juhuu";

            wenn's nicht klappt kannst du noch das versuchen:

            $cmd = "cp ".$src_path." ".$dest_path;
            $copy=system(EscapeShellCmd($cmd));

            wird dann auf Shell-Basis als Command ausgeführt.

            Falls das auch nicht geht, dann hat dein http-User wohl kein Schreibrecht im Verzeichnis.

            Solong

            Kommentar


            • #7
              Hmm, ne hat auch nix gefunzt...
              ich hab mir dieses ftp script zusammengebastelt, aber das Prob ist, dass er die lokale datei nicht öffnet.....

              $src_path=$datei1;
              $dest_path=$mypath;
              $ftp_server = "server";
              $ftp_user_name = "user";
              $ftp_user_pass = "pass";

              $conn_id = ftp_connect("$ftp_server");
              $login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
              if ((!$conn_id) || (!$login_result)) {
              echo "Ftp-Verbindung nicht hergestellt!";
              echo "Verbindung mit $ftp_server als Benutzer $ftp_user_name nicht möglich"; die; }
              else { echo "Verbunden mit $ftp_server als Benutzer $user"; }
              $upload = ftp_put($conn_id, "$dest_path", "$src_path", FTP_BINARY);
              if (!$upload) { echo "Ftp upload war fehlerhaft!"; }
              else { echo "Upload von $src_path als $dest_path erfolgreich!"; }
              ftp_quit($conn_id);

              Die Fehlermeldung lautet...
              Verbunden mit [server] als Benutzer
              Warning: error opening C:\\Eigene Dateien\\HTMLfiles\\gfx\\temp.gif in [script] on line 21
              Ftp upload war fehlerhaft!

              Kommentar


              • #8
                Laß doch die FTP-Verbindung weg, oder ist die Quelle ein Server?? Falls du auf FTP bestehst, ist das vielleicht ein NT-Server?? Wenn ja, brauchst du glaube ich einen anderen Pfad und zwar mit / anstatt mit \, bin mir nicht sicher...

                aber die Quelle sieht so aus, als sei das auf deinem Rechner. Dann ist der Weg mit dem Formular doch einfacher...

                Kommentar

                Lädt...
                X