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枚ずつアップロードした。
関連記事
-
-
PHP8系で関数の引数が設定しやすくなる名前付き引数について
PHP8系で名前付き引数が導入されたということを最近知った。今までは「第〇引数」 ...
-
-
CodeIgniter4で独自の404ページを表示する方法
CodeIgniter4にて存在しないページをブラウザから開くと、デフォルトの状 ...
-
-
TCPDF「Could not include font definition」エラーの対処方法
TCPDFでフォントを「arialunicid0」に指定したところ「TCPDF ...
-
-
PhpSpreadsheetで作成したエクセルファイルをPDFファイルに変換する方法
以前にPhpSpreadsheetでフォーマット用のエクセルを読み込み、指定した ...
-
-
AjaxのJSONP使用でPHPで作った配列をJSに返す方法
AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...