将图像上载到远程服务器

时间:2012-11-28 作者:Ruriko

我正在使用Wordpress media uploader上载图像,我想知道是否有办法将其上载到我的远程服务器而不是本地服务器?示例:我的wordpress博客托管在服务器A上,我想使用媒体上载程序将图像上载到服务器B,而不是服务器A。

这两台服务器都运行Ubuntu 10.04 LTS,以nginx作为Web服务器,并且都支持ftp&;sftp。

4 个回复
最合适的回答,由SO网友:Pontus Abrahamsson 整理而成

我刚刚构建了一个插件来实现这一点。它不是完美的,但它做得很好。

您可以在我的Github中找到它:https://github.com/pontusab/wp-ftp-media-library

因此,您需要更改第28行文件中的某些内容:

/**
     * 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 
    );
这个插件所做的是,它将上载结构从/年/月更改为仅在本地计算机上上载Server A. 然后使用php通过以下方式连接到ftp:ftp_connect. 该函数在运行wp\\u generate\\u attachment\\u元数据时激发。然后运行check in the upload folder to see if there areu any images, 如果是这样,它将通过以下方式将它们全部上载到ftp服务器ftp_put. 上载完成后,将使用功能从本地计算机中删除文件unlink.

然后插件将图像的url更改为指向ftp服务器的“公共”ip或主机名。我建议使用类似静态的东西。mydomain。com或cdn。密多迈。com。它们需要指向ftp服务器(服务器B),这使您能够从ftp服务器加载图像。

正如其他成员所说,您不应该使用ftp服务器来实现这一点,最好使用真正的cdn,由fuse或类似Amazon S3的东西装载。

SO网友:Ed Burns

听起来你好像只想使用CDN。大多数CDN的工作方式是在本地加载图像,然后在CDN位置进行镜像。然后设置一个指向CDN内容的域,并重写图像url以使用该域而不是普通url。

虽然我只有W3TC和Cloudfront的经验,但有几个很好的插件和服务。

SO网友:Ralf912

您必须了解WP如何上载文件。POST请求将文件发送到服务器,并将其存储在临时文件夹中。之后,WP将测试上传的文件,将其复制到内容目录并删除临时文件。

这是一个非常复杂的过程。对于图像,您可以连接到“media\\u upload\\u file”,然后检查它是否是图像。如果它是一个映像,请使用WP\\u文件系统将其复制到外部服务器(使用方法ftpext并在选项中提供您的ftp凭据),否则让WP使用wp_handle_upload().如果要将文件复制到外部服务器,您必须向WP提供url等,以便WP可以设置数据(例如附件帖子)。

这项工作不是用一手代码完成的。如果你不是开发人员,最好雇一个。或者搜索一个插件来为您完成这项工作。

SO网友:Mark Kaplun

您可以使用SSHFSFTPFS 在远程服务器上装载上载目录的目录。这样,您就不需要更改WordPress本身的任何内容。

缺点是,根据服务器B所在的位置,对上载文件的每次访问都会变慢。

结束