使用php将图像上传到不同的域

时间:2013-02-05 07:28:59

标签: php image cross-domain image-uploading

我正在开发一个应用程序,允许用户创建自己的HTML模板并将其发布到互联网。用户可以上传和使用图像。

问题陈述:
用户必须在发布模板之前创建。我使用 cpanel 函数创建域。但是,我还想将他的图片上传到他创建的域中当用户回来编辑模板时,使用相同的图像(即他们的位置)。我不想在两个域上单独复制!用户在 www.xyz.com 上编辑他的网站,他在 ABC.xyz.com 创建并发布它(可以是子域名或主域名)。因此,我希望将图像上传到ABC.xyz.com并反映相同的路径在编辑域上,因此避免了存储多个图像的开销。这涉及跨域脚本吗?(我相信是的!)
由于对如何实现这一点的不完全理解,我无法开始!我想知道如何处理它?任何帮助对我来说都是有益的,从正确的方向开始。 注意:如果我开始,将会更新代码。

2 个答案:

答案 0 :(得分:1)

不,它不需要跨域脚本。 您不需要将文件直接从浏览器上传到另一个域。

您可以将em上传到您的服务器,然后从那里复制(如果它在同一台服务器上)或ftp / scp /无论您上传的是什么。

棘手的部分可能是允许用户在他的网站上进行更改。但我相信你是在做同样的服务器......所以简单地使用apache mod_alias就可以了。

答案 1 :(得分:1)

我不确定您的设置是什么,但我会使用虚拟主机来存放子域,并将它们指向位于xyz.com域内的文件夹。

例如,用户在xyz.com上编辑他的网站,xyz.com将这些图像存储到xyz.com/ABC/images。然后,子域ABC.xyz.com实际上指向xyz.com/ABC文件夹,因为它是根www目录。

如果由于某种原因将域托管在两台不同的计算机上,则可以在cron作业上使用ftp或cp脚本将其他系统上的文件镜像到xyz.com域上的文件。

以下是将本地文件上载到外部服务器的ftp示例:

public function ExecFTPUpload($local_file, $uploadfilename){
    $handle = fopen($local_file, 'r');

    $success = true;

    $conn_id = ftp_connect($this->config->ftpserver);

    // check connection 
    if ($conn_id && ($login_result = ftp_login($conn_id, $this->config->ftp_user_name, $this->config->ftp_user_pass))) {
         ftp_pasv($conn_id, true); 
        // try to upload $local_file and save it to $handle
        if(!ftp_fput($conn_id, $uploadfilename, $handle, FTP_ASCII)) $success = false;
        ftp_close($conn_id);  
    }else $success = false;

    return $success;
}
相关问题