我正在开发一个应用程序,该应用程序允许用户创建自己的HTML模板并将其发布到互联网上。用户可以为此目的上传和使用图像。
问题说明:
用户必须先创建域,然后才能发布模板。我使用cpanel函数来创建域。但是,我也想将他的图像上传到他创建的域,并在用户回来编辑模板时使用相同的图像(即它们的位置)。我不想在两个域上分别复制!用户在www.xyz.com上编辑他的网站,并在ABC.xyz.com创建和发布它(可以是子域或主域)。因此,我希望图像上传到ABC.xyx.com,并在编辑域上反映相同的路径,这样就避免了存储多个图像的开销。这会涉及跨域脚本编写吗?(我相信是的!)
我无法开始,因为我不完全了解如何才能做到这一点!我想知道我该怎么做?任何帮助都有利于我朝着正确的方向开始。注意:如果我开始,将更新代码。
不,它不需要跨域脚本。您不需要将文件直接从浏览器上传到另一个域。
你可以把它们上传到你的服务器上,然后从那里复制(如果它在同一台服务器上)或ftp/scp/你所做的任何事情来上传它们。
棘手的部分可能是允许用户在自己的网站上进行更改。但我相信你们是在做同样的服务器。。。因此,只需简单使用apachemodalias就可以做到这一点。
我不确定你的设置是什么,但我会为子域使用虚拟主机,并将它们指向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;
}