0

我正在开发一个应用程序,该应用程序允许用户创建自己的 HTML 模板并将它们发布到 Internet。用户可以为此目的上传和使用图像。

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

4

2 回答 2

1

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

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

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

于 2013-02-05T07:37:16.060 回答
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;
}
于 2013-02-05T07:38:34.350 回答