リモート リソースから (有効な URL 経由で) 特定のファイル (例: 画像、ビデオ、zip、pdf、doc、xls など) をダウンロードし、サーバーに保存する 3 つの関数を紹介します。
現在の php.ini 設定によっては、一部の機能が動作しない場合があります。したがって、どの機能が最適であるかを試してみましょう。
注: ダウンロードしたファイルを保存するフォルダーが存在し、全員または Web プロセスに対して書き込み権限があることを確認してください。
以下のすべての例では、 http://4rapiddev.com/wp-includes/images/logo.jpg からリモート イメージをダウンロードし、ダウンロード サブ フォルダーに file.jpg という名前で保存します。
1. PHP でリモート ファイルをダウンロードします。 file_get_contents と file_put_contents
<?php function download_remote_file($file_url, $save_to) { $content = file_get_contents($file_url); file_put_contents($save_to, $content); }?>
例:
<?php download_remote_file('http://cdn2.4rapiddev.com/wp-includes/images/logo.jpg', realpath("./downloads") . '/file.jpg');?>
2. CURL を使用した PHP のリモート ファイルのダウンロード
<?php function download_remote_file_with_curl($file_url, $save_to) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch,CURLOPT_URL,$file_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $file_content = curl_exec($ch); curl_close($ch); $downloaded_file = fopen($save_to, 'w'); fwrite($downloaded_file, $file_content); fclose($downloaded_file); }?>
例:
<?php download_remote_file_with_curl('http://cdn2.4rapiddev.com/wp-includes/images/logo.jpg', realpath("./downloads") . '/file.jpg');?>
3. fopen を使用して PHP リモート ファイルをダウンロードする
<?php function download_remote_file_with_fopen($file_url, $save_to) { $in= fopen($file_url, "rb"); $out= fopen($save_to, "wb"); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); }?>
例:
<?php download_remote_file_with_fopen('http://cdn2.4rapiddev.com/wp-includes/images/logo.jpg', realpath("./downloads") . '/file.jpg');?>
繰り返しますが、「ダウンロード」フォルダーが存在し、書き込み可能である必要があります。
出典: http://4rapiddev.com/php/download-image-or-file-from-url/