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でCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...
-
-
PHPにて配列の出力時にジェネレータを利用してメモリを節約する方法
PHPにて大量のデータが格納された配列をforeach等でループ処理するような場 ...
-
-
PHPの構文チェック
JSONLINTみたいにオンラインで構文チェックを できるサイト様があったのでメ ...
-
-
PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法
PHPでOGPタグ(metaタグ)を取得する際、file_get_content ...
-
-
FLASHがインストールされているかどうかチェックする
以前にここでちょっとやったけど、インストールされているか どうかだけならもっと良 ...