将上传的图像移动到其他服务器

时间:2013-11-12 05:52:02

标签: php curl

您好我试图将上传的图像移动到作为备份服务器的远程服务器。因此,如果我上传图像,它将自动通过curl将文件发送到备份服务器。

上传,重命名和移动图片完美上传,但我遇到的唯一问题是将数据复制到远程服务器。

我的上传/重命名/移动图片功能。

function imageUpload($dateiIn,$maxDateiGr,$maxDateix,$maxDateiy) {
    if($_FILES[$dateiIn]['size']>0) {
      if(checkUploadSize($_FILES[$dateiIn]['size'],$maxDateiGr)) {
        if($dateiEndung = imageCheckSize($_FILES[$dateiIn]['tmp_name'],$maxDateix,$maxDateiy)) {
          $md5datei = md5_file($_FILES[$dateiIn]['tmp_name']).'_'.rand(10000,99999);
          if(move_uploaded_file($_FILES[$dateiIn]['tmp_name'],'/var/www/thumbs/'.$md5datei.$dateiEndung)) { 


            return $md5datei.$dateiEndung;

          }
          else { return false; }
        }
        else { return false; }
      }
      else { return false; }
    }
    else { return false; }
  }

$ md5datei =文件名和$ dateiEndung =文件格式(jpg)

现在我尝试做的是以下内容:

  function imageUpload($dateiIn,$maxDateiGr,$maxDateix,$maxDateiy) {
    if($_FILES[$dateiIn]['size']>0) {
      if(checkUploadSize($_FILES[$dateiIn]['size'],$maxDateiGr)) {
        if($dateiEndung = imageCheckSize($_FILES[$dateiIn]['tmp_name'],$maxDateix,$maxDateiy)) {
          $md5datei = md5_file($_FILES[$dateiIn]['tmp_name']).'_'.rand(10000,99999);
          if(move_uploaded_file($_FILES[$dateiIn]['tmp_name'],'/var/www/thumbs/'.$md5datei.$dateiEndung)) { 


            $filename = '/var/www/thumbs/'.$md5datei.$dateiEndung;
            $handle = fopen($filename, "r");
            $data = fread($handle, filesize($filename));
            $POST_DATA   = array('file'=>base64_encode($data));
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, 'http://external.net/upload.php');
            curl_setopt($curl, CURLOPT_TIMEOUT, 30);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA);
            $response = curl_exec($curl);
            curl_close ($curl);

// return name to be able to write it inside the database
            return $md5datei.$dateiEndung;

          }
          else { return false; }
        }
        else { return false; }
      }
      else { return false; }
    }
    else { return false; }
  }

在external.net服务器上我得到了upload.php文件:

<?PHP
$encoded_file=$_POST['file'];
$decoded_file=base64_decode($encoded_file);
$dest = "/var/www/thumbs/".$decoded_file;
/*Now you can copy the uploaded file to your server.*/
file_put_contents($dest,$decoded_file);
?>

但是文件仍然没有落在外部服务器上的/ var / www / thumb文件夹中。

两个错误日志都是空的,我不知道该怎么办没有错误..

1 个答案:

答案 0 :(得分:3)

我们如何改变

$POST_DATA   = array('file'=>base64_encode($data),'FILENAME'=>$filename);  

并在upload.php

$dest = "/var/www/thumbs/".$decoded_file;

$dest = "/var/www/thumbs/".$_POST['FILENAME'];

然后运行代码