PHPで他サーバにHTTP経由にてファイルをアップロードする方法
2024/01/18
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で「Unable to allocate~」とエラー
PHPで「Unable to allocate memory for pool」 ...
-
-
Composerで後から別のパッケージを追加する方法と削除する方法
Composerで何らかのパッケージをインストールし、後から別のパッケージを追加 ...
-
-
phpQueryを利用したjQueryライクなスクレイピング方法
phpQueryというライブラリを使用することでjQueryのセレクタ指定のよう ...
-
-
Class 'DOMDocument' not foundエラーの対処方法
PHPでphpQueryというライブラリを利用しようとすると「Fatal err ...
-
-
PHPで外部のAPIにリクエストする際に並列処理(非同期実行)する方法
あるシステムからPHPで外部のAPIにリクエストしたかった。ただ、複数回リクエス ...