勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで他サーバにHTTP経由にてファイルをアップロードする方法

   2024/01/18  PHP

formで画像を送信した後、他サーバにファイルをアップロードしたかった。以前はPHPのFTP関数を用いる方法を使ったけど、今回の環境では上手く動かなかった。HTTPで送信する方法を調べたのでメモ。

 

ソースコード

送信側

foreach( $_FILES as $key => $val ){
    if( !$val['size'] ){
        continue;
    }
    $data = array(
        'file'=>'@'.$_FILES[$key]['tmp_name'].';filename='.$_FILES[$key]['name'].';type='.$val['type'], 
        'key' => $key, 
        'id' => $id,
    ); //file以外にkeyやidなども配列に入れて送信できる
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, 'http://hogehoge.com/receive.php'); //受取側のURL指定
    $result = curl_exec($ch);
    curl_close($ch);
}

受信側

$img_name = imgUpload($_FILES);
function imgUpload( $img_list = array() ){
    if( empty($img_list) ){
        return false;
    }
    foreach( $img_list as $key => $val ){
        $ext = $val['type'];
        if ($ext == 'image/jpeg' || $ext == 'image/jpg') {
            $tmp_ext = '.jpg';
        } elseif ($ext == 'image/png') {
            $tmp_ext = '.png';
        } elseif ($ext == 'image/gif') {
            $tmp_ext = '.gif';
        } else {
            return false;
        }
        $tmp_name = md5(uniqid(rand(), true)) . $tmp_ext;
        if( !move_uploaded_file($val['tmp_name'], $img_path . $tmp_name) ){
            return false;
        }
        $return[$key]['url'] = $tmp_name;
    }
    return $return;
}

 

その他

まとめてアップロードできたらいいんだけど、方法が分からなかったので今回は1枚ずつアップロードした。

 - PHP

  関連記事

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法
SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...

FPDIで「This PDF document probably uses~~」エラーの対処方法
FPDIで「This PDF document probably uses~~」エラーの対処方法

FPIDであるPDFを読み込ませようとすると「This PDF document ...

PHPのテンプレートエンジン「Twig」の使い方について簡易メモ
PHPのテンプレートエンジン「Twig」の使い方について簡易メモ

開発中の案件でテンプレートエンジンのTwigを利用する機会があった。使ってみた感 ...

ブラウザから動画ファイル名を確認できないようにPHPで動画を出力する方法
ブラウザから動画ファイル名を確認できないようにPHPで動画を出力する方法

Webページ上で動画ファイルを再生したい場合、通常だとブラウザのソースコード上に ...

PHPにて指定した画像に対して、繰り返し透かし画像処理する方法
PHPにて指定した画像に対して、繰り返し透かし画像処理する方法

画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...