我正在使用Wordpress媒体上传器上传图像,我想知道是否有一种方法可以将其上传到远程服务器而不是本地服务器?示例:我的wordpress博客托管在服务器A上,并且我想使用媒体上传器将图像上传到服务器B而不是服务器A。
这两台服务器都运行带有nginx作为网络服务器的Ubuntu 10.04 LTS,并且都支持ftp和sftp。
我正在使用Wordpress媒体上传器上传图像,我想知道是否有一种方法可以将其上传到远程服务器而不是本地服务器?示例:我的wordpress博客托管在服务器A上,并且我想使用媒体上传器将图像上传到服务器B而不是服务器A。
这两台服务器都运行带有nginx作为网络服务器的Ubuntu 10.04 LTS,并且都支持ftp和sftp。
Answers:
我刚刚建立了一个可以做到这一点的插件。它不是完美的,但是可以完成它的工作。
您可以在我的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
);
该插件的作用是,将上载结构从/ year / month更改为仅在我们的案例Server A中在本地计算机上上载。然后,它使用php通过ftp_connect连接到ftp 。当wp_generate_attachment_metadata运行时,该函数将触发。然后,它在上载文件夹中运行检查以查看是否有任何图像,如果有,它将通过ftp_put将所有图像上载到ftp服务器。上传完成后,将使用unlink功能从本地计算机中删除文件。
然后,插件将图像的URL更改为指向ftp服务器的“公共” ip或主机名。我建议使用诸如static.mydomain.com或cdn.mydomai.com之类的东西。它们需要指向ftp服务器(服务器B),这使您能够从ftp服务器加载图像。
正如其他成员所说,您应该为此使用ftp服务器,最好是使用真实的CDN,通过保险丝或类似Amazon S3的方式安装。
您必须了解WP如何上传文件。POST请求将文件发送到服务器,该文件将存储在一个临时文件夹中。之后,WP将测试上传的文件,将其复制到内容目录中并删除临时文件。
这是一个非常复杂的过程。对于图像,您可以挂钩到“ media_upload_file”,然后检查它是否为图像。如果是图像,则将其与WP_Filesystem一起复制到外部服务器(使用方法ftpext并在选项中提供您的ftp凭据),否则让WP使用来处理上传wp_handle_upload()
。如果将文件复制到外部服务器,则必须向WP提供url等,以便WP可以设置数据(例如,用于附件发布)。
这项工作不是用满满的代码完成的。如果您不是开发人员,最好雇用一个。或搜索将为您完成此操作的插件。