Einfacher FTP-Upload mit PHP

| 5 Kommentare

Weil man es doch immer mal wieder gebrauchen kann und ich es mir doch nie merke, speichere ich den Code-Schnipsel jetzt einfach mal hier ab! :-)

<?php
// FTP-Zugansdaten
$host     = 'ftp.example.com';
$user     = 'developer';
$password = 'secret';

// Dateiinformationen
$filename = 'test.txt';
$content  = 'Uploaded at ' . date('Y-m-d H:i:s');

// erzeuge stream context
$stream = stream_context_create(array('ftp' => array('overwrite' => true)));

// speichere die Datei
$uri = sprintf('ftp://%s:%s@%s/%s', $user, $password, $host, $filename);
file_put_contents($uri, $content, 0, $stream);

5 Kommentare

  1. Der Vollständigkeit halber noch der “Klassiker”:


    $host = "ftp.example.de";
    $user = "developer";
    $password = "topsecret";

    $connection_id = ftp_connect($host);
    $login_result = ftp_login($connection_id, $user, $password);

    if (!$connection_id || !$login_result) {
    //...
    }

    $filename = "file.txt";
    $content = "Uploaded at ".date('Y-m-d H:i:s');

    file_put_contents($filename,$content);

    $upload = ftp_put($connection_id, $filename, $filename, FTP_ASCII);

    if (!$upload)
    {
    //...
    }

    ftp_quit($connection_id);

    Bin ein großer Freund von so nützlichen “kann man immer mal gut gebrauchen”-Codeschnippseln ;)

  2. Ich mag auch Code Schnipsel, nur leider versucht man immernoch alles old school zu lösen. Wieso macht man nicht dafür ne static class und 2-3 Funktionen und nen schönen Aufruf und schon ist das ganze mit noch weniger Aufwand wieder zu verwenden und man kann es auch mal ohne schlechtes Gewissen in einer Anwendung einsetzen.

  3. @Apo: Wenn ich kann, dann verwende ich auch lieber Komponenten aus einer getesteten Library, aber manchmal ist das leider nihct möglich und dann muss ich auf die “OldSchool”-Lösung zurück greifen.

  4. So da ich das ganze auch zufällig gebrauchen konnte hab ich mal das ganze OO realisiert.

    server = $server;
    $this->username = $username;
    $this->password = $password;
    }

    private function connect()
    {
    $this->ftpConnectionID = ftp_connect( $this->server );
    if( !$this->ftpConnectionID )
    {
    echo “Connection problem with server”;
    return false;
    }
    else if( !ftp_login( $this->ftpConnectionID , $this->username , $this->password ) )
    {
    echo “Authentification failure”;
    return false;
    }
    return true;
    }

    public function setFTPDirectory( $ftpDirectory )
    {
    $this->ftpDirectory = ftpDirectory;
    }

    public function uploadFile( $localFile , $newFileName = “” , $mode = FTP_BINARY )
    {
    if( $newFileName == “”)
    {
    $filePathArray = split( “/” , $localFile );
    $newFileName = $filePathArray[count( $filePathArray )-1];
    }
    if( $this->connect() )
    {
    if( !ftp_put( $this->ftpConnectionID , $this->ftpDirectory . $newFileName , $localFile , $mode ) )
    {
    echo “Error during upload”;
    return false;
    }
    }
    else
    {
    return false;
    }
    ftp_quit( $this->ftpConnectionID );
    return true;
    }
    }
    ?>

  5. Pingback: Streams | David Müller: Webarchitektur

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.


Schlagwörter: A/B-Test, AbstractType, Adapter, AddOn, Administration, Ajax, Amazon, Animation, Annotations, Anonyme Klasse, Ant, Apache, API, Array, ArrayAccess, Attachment, Auftrag, Ausbildung, Auswertung, Authentifizierung, AutoLoader, AWS, Bedienung, Bedingung, Benchmark, Berechtigung, Berlin, Bildbearbeitung, Bildschirmfoto, Blog, Blogroll, BOM, Bootstrap, Bot, Browser, Bugtracker, Byte Order Mark, Bücher, Cache, CakePHP, Call-Center, Callback, CamelCase, Canvas, Captcha, CDN, Cheatsheet, CLI, Clickout, Closure, Cloud, CodeSniffer, Collection, Community, Comparator, Config, Contest, Controller, Converter, CouchDB, Countable, Cronjob, CRUD, CSS, CSV, CustomLibrary, Custom_Model, Daemon, Data Mapper, Datei, Datenbank, Datenstruktur, Datentypen, Dating, Datum, Debug, Decorator, Dekorierer, Design, Design Patterns, Doctrine, Dokumentation, Dump, Duplikat, each, EC2, Eclipse, Email, Entwicklung, Entwurfsmuster, Enum, Erweiterung, Event, Eventhandling, Exception-Handling, Extension, Facebook, Factory, Fallback, Fehler, Fehlermeldung, Filter, Firefox, Flash, flexigrid, Foreach, Formatierung, Formular, Framework, FTP, Funktion, Futon, ga:pi(), Getter, Google Analytics, Hash, Hash-Bang, Header, htaccess, HTML5, htpasswd, HTTP, HTTPS, IDE, If, Implementierung, InnoDB, Interceptor, Interface, Internet Explorer, isset, Iterator, Java, JavaScript, Job, jQuery, Kommentar, Konfiguration, Konsole, Kontrollstruktur, kopieren, kostenlos, Kundenbetreuung, Late Static Binding, Layout, Links, Linux, Listeners, Lizenz, Logging, Löschen, Magento, Magic Methods, Manual, ManyToMany, Marketing, Methode, Model, Monolog, MVC, MySQL, NetBeans, Network, Nirvanix, Objekt, Observable, Observer, OneToMany, Online Tool, OOP, Open Source, Operator, OR-Mapper, Order, ORM, O’Reilly, Parameter, Partnersuche, Passwort, Performance, PHP, php.ini, PHP hates me, phpMyAdmin, PHPUnit, Plugin, Popup, Proxy, Prüfsumme, Prüfung, QR-Code, Qualitätssicherung, Query, Queue, Redesign, Refactoring, Reflection, Request, Response, Responsive Design, Rest-API, Rockstar, Rollback, Routing, S3, Samba, Scheifen, Schleife, Schutz, Screenshot, Secure Shell, Selbstreferenz, Server, Setter, setTimeout, Shop, Sicherheit, Sicherung, Sichtbarkeit, Singleton Pattern, Skin, SOAP, Social Network, Software, Sortierung, Sourcecode, Spam, Speicherproblem, Spickzettel, SPL, Splittest, SSH, SSL, Stammtisch, Statement, static, Statistik, Status, Stellvertreter, Strategy Pattern, Stream, String, Stuttgart, Stylesheet, Subversion, Sun VirtualBox, Support, SVN, Switch, Symfony, Symfony2, Symfony Live, Tag, Template, Template Method, Ternär Operator, Testing, Theme, Thumbnail, Tool, Tour, Tracking, Twig, Twitter, Type-Cast, Ubuntu, Umwandlung, Underscore, unset, Update, Upload, Url, User Story, Validierung, Vererbung, Versionskontrolle, Versionsnummer, Verzweigung, Video, Videospiel, Virtualisierung, Visitor Pattern, Vorschaubild, walk, Warteschlange, Webserver, Webservice, Weiterleitung, Werkzeug, Windows, WindowsAzure, WordPress, Wrapper, Writer, XML, Youtube, Zeitschleife, Zeitsteuerung, Zend Framework, Zend_Application, Zend_Cloud, Zend_CodeGenerator, Zend_Http_Client, Zend_Reflection, Zend_Service, ZPress, Zugangskontrolle, Zugriffsmethode