勉強したことのメモ

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

  関連記事

PHPでエラーメッセージを見やすくするwhoopsの利用方法
PHPでエラーメッセージを見やすくするwhoopsの利用方法

PHPのエラーメッセージが見づらい。これはこういうもの、と諦めていたがCodei ...

MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法
MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法

先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...

PHPからDBX Platformを利用してDropbox内のファイル一覧を取得する方法
PHPからDBX Platformを利用してDropbox内のファイル一覧を取得する方法

以前にPHPからDropboxにファイルをアップロードするという記事を書いたが、 ...

PHPで特定のサイトからのリクエストのみ受け付けて処理する方法
PHPで特定のサイトからのリクエストのみ受け付けて処理する方法

指定したサイトからのリクエストのみ受け付けて処理したいという状況があった。その他 ...

PHPのhash_file関数でファイルの改ざんを検知する方法
PHPのhash_file関数でファイルの改ざんを検知する方法

サイト内の特定の数ページのみ簡易的なものでも良いので自動でファイルの改ざんチェッ ...