kostenloser Webspace werbefrei: lima-city


PHP Uploader Daten mit FTP senden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Hey Leute,
    folgendes Problem:
    Ich habe einen PHP fähigen und sehr schnellen Webspace der aber nur sehr klein ist. Darauf möchte ich ein Uploadscript laufen lassen, das über POST vom Browser die Dateien empfängt, und die Empfangenen Dateien dann mit FTP an einen anderen langsamen Server ohne PHP sendet, wo sie dann gelagert werden.
    Das bedeutet, das die Daten auf dem schnellen Server "zwischengespeichert" werden sollen, damit der Upload schnell geht und dann mit FTP an den langsamen gesendet werden. Dabei sollen die Dateien aber nicht auf der Festplatte abgelegt werden, da dafür der Platz nicht ausreicht, sondern nur in einer Variable oder so behalten werden.

    Browser --(POST)--> schneller Server --(FTP)--> langsamer Server

    Ich hatte schon ein paar Scripte aber keines hat funktioniert, da ich auch noch nie mit FTP über PHP gearbeitet habe.

    Wäre froh über etwas hilfe!!


    Grüße,
    Stefan

    P.S.: FTP ist nicht Pflicht, sollte es einen anderen viel besseren Weg geben, kann ich auch PHP auf dem langsamen Server installieren.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. aklasse schrieb:
    (..)

    Browser --(POST)--> schneller Server --(FTP)--> langsamer Server

    Ich hatte schon ein paar Scripte aber keines hat funktioniert, da ich auch noch nie mit FTP über PHP gearbeitet habe.

    Wäre froh über etwas hilfe!!


    Grüße,
    Stefan

    P.S.: FTP ist nicht Pflicht, sollte es einen anderen viel besseren Weg geben, kann ich auch PHP auf dem langsamen Server installieren.


    Ich gehe mal davon aus das du php einigermaßen beherrscht und der erste teil, Daten hochzuladen , kein Problem für Dich darstellt (?).

    Vielleicht hilft Dir diese Quelle? Ich habe die Codes aber nicht getestet.
    Beachte das Du Dich zum downloaden registrieren musst aber ansonsten keine nachteile für Dich bestehen (bin selber registriert)

    Das hier scheint mir am erfolgversprechendsten zu sein...

    This is a simple wrapper class meant to send a file to a directory of an FTP server using the PHP FTP extension.


    Beitrag zuletzt geändert: 17.7.2010 22:03:03 von simuliertes
  4. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Ich habe folgendes Script geschrieben, aber es funktioniert einfach nicht. Vielleicht fällt einem auf, was ich ändern muss.

    HTML Teil
    ........
    <form action="ftp.php" enctype="multipart/form-data" method="POST">
    
    <input name="datei" type="file"
        size="50" maxlength="1024">
    
    <input type="submit" name="Abschicken"
        value="Abschicken">
    </form>
    ..........


    <?php
    
    $server = "ftp.meinserver.de";
    $user = "username";
    $pw = "dasfindetkeinerraus";
    
    $conn = ftp_connect($server);
    
    
    ftp_login($conn, $user, $pw);
    
    $data = $_POST['datei'];
    
    ftp_put($conn, "asdf.txt", $data, FTP_ASCII);
    
    ftp_quit($conn);
    ?>


    Das Script ist natürlich nicht abgesichert oder so, ich wollte damit nur testen ob es funktioniert. Die Textdatei wird erstellt, aber sie hat keinen Inhalt... (der natürlich im Original vorhanden war)

    Woran kann das liegen, bzw. was mache ich falsch.

    [/code]

    Beitrag zuletzt geändert: 17.7.2010 22:14:44 von aklasse
  5. yo mey!
    dieses 'feature' ist seit 2003 in php 'engebaut'. na! das ist ein langzeitbug ;o)
    die lösung ist hier.
  6. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Auf der Seite finde ich zwar viele Fehlerberichte, aber keine Lösung.

    Liegt der Fehler jetzt bei PHP oder im HTML Teil??

    (Auf dem Server läuft PHP 4.4.9)


    //EDIT:

    Hab die Antwort gefunden. Ich mache es jetzt so:

    <?php
    
    $server = "server.at";
    $user = "user12345";
    $pw = "geheim.";
    $path = "/www/";
    
    $conn = ftp_connect($server);
    
    ftp_login($conn, $user, $pw);
    
    ftp_put($conn, $path . $_FILES['datei']['name'], $_FILES['datei']['tmp_name'], FTP_BINARY);
    
    ftp_quit($conn);
    
    ?>




    Funktioniert Problemlos.

    Beitrag zuletzt geändert: 18.7.2010 18:58:02 von aklasse
  7. Nur noch eine Frage zum Verständnis (ich bin in Sachen File-upload auch noch ziemlich "grün"=unerfahren):

    Wenn Du eine Datei mit POST hochlädtst, dann wird sie doch automatisch unter einem temporären Verzeichnis auf dem "schnellen Server" zunächst zwischengespeichert, oder etwa nicht ?!?

    Dein Kommando ftp_put(...) bezieht sich ja definitiv auf eine Datei des "lokalen" Server (also Deines "schnellen Servers"). Dann hast Du also auf dem Temp-Bereich Deines "schnellen Servers" keine Platzprobleme?
  8. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Wie gesagt, ich habe nur Webspace gemietet und keinen eigenen Server. Das Temporäre Verzeichniss ist ein "Übergangsverzeichniss" das nicht zum Webspace dazugerechnet wird, da die enthaltenen Daten nachdem die PHP Datei ausgeführt wurde wieder vollständig gelöscht werden.

    Daher habe ich hier keine Platzprobleme.


    Ich habe das Script jetzt auf meinem Server ausprobiert, wo es ohne probleme funktioniert, auf Lima-City city bekomme ich aber folgende Fehlermeldung:
    Warning: ftp_put() [function.ftp-put]: Illegal PORT command in /home/webpages/lima-city/aklasse/html/ftp.php on line 20

    Wenn ich das exakt gleiche Script auf meinem Webspace laufen lasse (auf mit gleichem Zielserver) funktioniert alles.

    Auch wenn ich mit FTP auf den LC Server Daten überspielen möchte mit dem Script funktioniert es nicht.

    Zickt LC prinzipiell mit PHP-FTP oder ist das wieder ein fehler meinerseits?
  9. die lösungen SIND auf der seite:
    aber die schönste lösung ist offenbar (weil doch kein bug!):
    [2009-09-10 06:53 UTC] just at helping dot com

    IT IS NOT a BUG. GET and post methods will work as normal requests but if you use the form enctype multipart then you got to handle the request as multipart. In java I use the oreilly MultipartRequest to parse the data and it works wonderfully. You migh thave to find a way to get it in PHP or you can write yourself a multipartrequest class based on oreilly's one.

    siehe dazu noch bei w3c

    (
    oder für bug-fetischisten:
    - method="get" verwenden oder
    - auf enctype verzichten (igitt igitt!).
    )

    ==== daher sieht man's auch, dass seit 2003 die menscheit nichts dazu gelernt hat ;o)
  10. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    Habe nun folgendes Problem:

    Wenn ich was zu LC senden möchte bekomme ich folgenden Fehler:
    Warning: ftp_put() [function.ftp-put]: Illegal PORT command in /home/webpages/lima-city/aklasse/html/ftp.php on line 20

    Daher habe ich es zu bplaced versucht. Hier bekomme ich diesen Fehler:
    Warning: ftp_put() [function.ftp-put]: Could not open data connection to port [xxxxxx]: Connection refused in /var/home/haufen_at/www/test/ftp.php on line 20


    Hier nochmal der Code:
    <?php
    
    $server = "dlmanager.bplaced.net";
    $user = "dlmanager_user";
    $pw = "haut008";
    $path = "/";
    
    $conn = ftp_connect($server, 21, 120);
    
    if (!$conn) {
    echo "ftp_connect Error!!";
    die;
    }
    
    if (!ftp_login($conn, $user, $pw)) {
    echo "ftp_login Error!!";
    die;
    }
    
    if (!ftp_put($conn, $path . $_FILES['datei']['name'], $_FILES['datei']['tmp_name'], FTP_BINARY)) {
    echo "ftp_put Error!!";
    die;
    }
    
    ftp_quit($conn);
    
    echo "Datei <b>" . $_FILES['datei']['name'] . "</b> wurde auf <b>" . $server . "</b> gespeichert.";
    
    
    ?>


    Zeile 20 ist die ftp_put Zeile.


    Wenn ich es auf meinen eigenen Server speichern lasse (über FTP) funktioniert alles.
  11. Das PORT Problem sollte sich lösen lassen, indem du in den passiven Modus wechselst. Das geht mit ftp_pasv und sort dafür, dass der Server bestimmen kann, welcher Port für die Datenübertragung verwendet wird. Im activen Modus "zwingt" der Client (also du bzw. dein Script) dem Server einen Port auf und das scheint der lima Server nicht zu mögen.
  12. Autor dieses Themas

    aklasse

    Kostenloser Webspace von aklasse

    aklasse hat kostenlosen Webspace.

    WORKS!!

    Danke für die Hilfe!! Funktioniert jetzt!

    Wenn ich das prjekt abgeschlossen habe werde ich es wieder hier posten.
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!