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枚ずつアップロードした。
関連記事
-
-
FPDIで「This PDF document probably uses~~」エラーの対処方法
FPIDであるPDFを読み込ませようとすると「This PDF document ...
-
-
PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法
サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...
-
-
PHPとajaxでチャットの作成
■ソース ・index.php <? error_reporting(E_ ...
-
-
PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法
PHPにて漢数字と普通の数字の相互変換を行いたい。例えば「123465789」⇔ ...
-
-
Codeigniter4でMySQLに接続しCRUD操作する方法
Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...