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