要让帝国CMS(PHP开发的内容管理系统)上传的图片上传到另一台服务器,你可以通过修改系统的上传功能来实现。以下是实现这一需求的步骤和示例代码:
以下是使用cURL上传文件的示例代码:
// 假设这是上传.php文件中的相关部分
$target_url = "http://另一台服务器地址/receive_upload.php"; // 另一台服务器上接收文件的URL
$file_name_with_full_path = $_FILES['upload_file']['tmp_name'];
if (function_exists('curl_file_create')) {
$cFile = curl_file_create($file_name_with_full_path);
} else {
$cFile = '@' . realpath($file_name_with_full_path);
}
$post = array(
'extra_info' => '123456', // 可以是任何额外参数
'file_contents'=> $cFile
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
// 处理返回的结果
if ($result === 'true') {
// 上传成功后的处理逻辑
} else {
// 上传失败后的处理逻辑
}
另一台服务器上的 receive_upload.php 示例代码:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$extra_info = $_POST['extra_info'];
$file_contents = $_FILES['file_contents'];
// 处理接收到的文件,例如保存到服务器
if (move_uploaded_file($file_contents['tmp_name'], "uploads/".$file_contents['name'])) {
echo 'true'; // 返回true表示上传成功
} else {
echo 'false'; // 返回false表示上传失败
}
}
?>
确保两台服务器的PHP配置都允许远程文件上传,并且安全设置(如open_basedir)不会阻止文件上传到另一台服务器。另外,记得处理好文件名和扩展名,避免安全问题。