it-swarm.com.de

Laden Sie Bilder auf den Remote-Server hoch

Ich verwende Wordpress Media Uploader zum Hochladen von Bildern und habe mich gefragt, ob es eine Möglichkeit gibt, das Hochladen auf meinen Remote-Server anstatt auf meinen lokalen Server zu ermöglichen. Beispiel: Mein WordPress-Blog wird auf Server A gehostet und ich möchte den Medien-Uploader verwenden, um Bilder auf Server B anstatt auf Server A hochzuladen.

Beide Server führen Ubuntu 10.04 LTS mit nginx als Webserver aus und beide unterstützen ftp & sftp.

11
Ruriko

Ich habe gerade ein Plugin gebaut, das das macht. Es ist nicht perfekt, aber es macht seinen Job.

Sie finden es in meinem Github: https://github.com/pontusab/wp-ftp-media-library

Sie müssen also einige Dinge in der Datei in Zeile 28 ändern:

/**
     * Change this to match your server
     * You only need to change the those with (*)
     * If marked with (-) its optional 
     */

    $settings = array(
        'Host'    =>    'ip or hostname',           // * the ftp-server hostname
        'user'    =>    'username',                 // * ftp-user
        'pass'    =>    'password',                 // * ftp-password
        'cdn'     =>    'cdn.example.com',          // * This have to be a pointed domain or subdomain to the root of the uploads
        'path'    =>    '/',                        // - ftp-path, default is root (/). Change here and add the dir on the ftp-server,
        'base'    =>    $upload_dir['basedir']      // Basedir on local 
    );

Dieses Plugin ändert die Upload-Struktur von/Jahr/Monat so, dass sie nur auf dem lokalen Computer hochgeladen wird, in unserem Fall Server A . Dann benutzt es PHP, um sich mit dem FTP zu verbinden: ftp_connect . Die Funktion wird ausgelöst, wenn wp_generate_attachment_metadata ausgeführt wird. Anschließend wird ein Check im Upload-Ordner ausgeführt, um festzustellen, ob Bilder vorhanden sind . In diesem Fall werden alle Bilder über ftp_put auf den FTP-Server hochgeladen. Wenn der Upload abgeschlossen ist, werden die Dateien mit der Funktion Unlink vom lokalen Rechner entfernt.

Dann ändert das Plugin die URL der Bilder in die "öffentliche" IP oder den Hostnamen, der auf den FTP-Server verweist. Ich schlage vor, etwas wie static.mydomain.com oder cdn.mydomai.com zu verwenden. Sie müssen auf den FTP-Server (Server B) zeigen, damit Sie die Bilder vom FTP-Server laden können.

Wie die anderen Mitglieder sagen, sollte man dazu keinen FTP-Server verwenden, besser mit einer echten CD, Mounted by Fuse oder so ähnlich wie Amazon S3.

14

Es hört sich fast so an, als ob Sie nur einen CDN verwenden möchten. Bei den meisten CDNs werden Ihre Images lokal geladen und am CDN-Speicherort gespiegelt. Anschließend richten Sie eine Domain ein, die auf den CDN-Inhalt verweist, und schreiben Ihre Image-URLs neu, um diese Domain anstelle Ihrer normalen URL zu verwenden.

Es gibt einige gute Plugins und Dienste, obwohl ich nur Erfahrung mit W3TC und Cloudfront habe.

0
Ed Burns

Sie müssen verstehen, wie WP eine Datei hochlädt. Eine POST -Anforderung sendet die Datei an den Server, auf dem sie in einem temporären Ordner gespeichert wird. Danach testet WP die hochgeladene Datei, kopiert sie in das Inhaltsverzeichnis und löscht die temporäre Datei.

Dies ist ein sehr komplexer Prozess. Für Bilder können Sie sich in 'media_upload_file' einhängen und dann prüfen, ob es sich um ein Bild handelt. Wenn es sich um ein Image handelt, kopieren Sie es mit WP_Filesystem auf den externen Server (verwenden Sie die Methode ftpext und geben Sie Ihre FTP-Anmeldeinformationen in den Optionen an). Anderenfalls kann WP den Upload mit wp_handle_upload() ausführen. Wenn Sie die Datei auf einen externen Server kopieren, müssen Sie die URL usw. an WP weitergeben, damit WP die Daten einrichten kann (z. B. für Anhangspostings).

Dieser Job wird nicht mit einer Hand voll Code erledigt. Wenn Sie kein Entwickler sind, sollten Sie einen einstellen. Oder suchen Sie nach einem Plugin, das dies für Sie erledigt.

0
Ralf912