目次
目的
外部サイトから画像をダウンロードする。
理由
某ECサービスからEC-cubeに移転しようとしたが、
画像の一括ダウンロード機能がなかった。
そもそも画像のダウンロード機能がない。
手段
画像のダウンロード機能はないが、画像名のリストはCSVで取得できる。なんじゃそらというわけで、そのCSVを使って画像をhttpアクセスで一括ダウンロードします。
$filepath = './common/file/imagelist.csv';// CSVファイルの設置箇所指定
$csv = file_get_contents($filepath);
$lines = explode("\r\n", $csv);
foreach ($lines as $line)
{
$img_url = 'http://hoge.com/img/'.$line;// 外部サイトのドメインとか画像の設置ディレクトの指定
$local_path = './common/fetch_img/'.$line; // 画像の保存先
$data = file_get_contents($img_url);
file_put_contents($local_path, $data);
unset($local_path);
unset($img_url);
unset($data);
unset($line);
}
ちなみに(1)
単品で画像を取得したい場合は↓
$img_url = 'http://hoge.com/img/'.$line;// 外部サイトのドメインとか画像の設置ディレクトの指定 $local_path = './common/fetch_img/'.$line; // 画像の保存先 $data = file_get_contents($img_url); file_put_contents($local_path, $data);
ちなみに(2)
ファイルが大きすぎるか、多すぎると処理が追いつかなくて以下のようなエラーができるかもしれません。
Fatal error: Maximum execution time of 300 seconds exceeded in
つまり処理が長すぎるので、やーめたってことです。
※300のところは各環境で違う
共用サーバーによっては使えないかもしれませんが、
以下のものを処理の先頭に記載すれば行ける場合も
ini_set("max_execution_time",600);
これで10分は処理が続きます。
追記
ひとこと
外部サーバーだと過剰アクセスになる場合があるので、
予め管理者に確認を取ってから使用してくださいねー