1

您好我正在尝试将上传的图像移动到作为备份服务器的远程服务器。因此,如果我上传图像,它会自动通过 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/thumbs 文件夹中。

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

4

1 回答 1

4

我们改变怎么样

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

并且在upload.php

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

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

然后运行代码

于 2013-11-12T05:57:07.550 回答