要让帝国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)不会阻止文件上传到另一台服务器。另外,记得处理好文件名和扩展名,避免安全问题。