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のsystem関数やexec関数が使用できずにエラーが出力される
レンタルサーバ上でPHPのsystem関数を実行しようとすると「Fatal er ...
-
-
PHPでBlowfishアルゴリズムを用いた暗号化と復号化方法
PHPでBlowfishアルゴリズムを用いてCBCモードで暗号化と復号化を行いた ...
-
-
PukiWikiでバックアップを週一等スケジュール化して実行する方法
PukiWikiでバックアップを取りたかった。調べたらディレクトリごと保存すれば ...
-
-
PHPでランダムなカラーコードを生成する「RandomColor.php」ライブラリの利用方法
PHPでランダムなカラーコードを生成したい。自作するとなると「0~9」「a~f」 ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...