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枚ずつアップロードした。
関連記事
-
-
file_get_contentsを使用する際にタイムアウト設定
20秒に1回自動でリロードするページにて file_get_contentsを使 ...
-
-
複数(PHP / metaタグ / htaccess)の方法で301リダイレクト
サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題 ...
-
-
PHPとajaxでチャットの作成
■ソース ・index.php <? error_reporting(E_ ...
-
-
PHPからRedisを利用する際のよく使う構文について
PHPからRedisを利用する際のよく使う構文について以下にメモ。 ...
-
-
CodeIgniter4でフォームからファイルをアップロードし保存する方法
CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...