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とLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...
-
-
PHPで日時比較時の注意
PHPで日時を比較する際にミスがあったのでメモ。 基本形は下記。 $limit_ ...
-
-
PHPで指定時間内に指定回数以上のアクセスがあった場合に429エラーを表示させる方法
ログインフォームやお問い合わせページに対して短期間に多数のアクセスがあり、それを ...
-
-
Smartyでテンプレートファイル(tplファイル)を編集しても反映されない
Smartyで作成されたシステムがあり、一部修正でtplファイルを編集したものの ...
-
-
PHPでソーシャル(SNS)ログインする方法2018
久しぶりにソーシャル(SNS)ログインを実装する機会があった。以前に対応方法を書 ...