コレクター公開インターフェイスを作成するときに、リモート添付ファイルの機能を使用する必要があることが多いため、通常の状況では、ファイルをリモートからローカルにダウンロードするための PHP 関数を作成しました。サーバーが CURL 機能をサポートしていれば、プログラムは CURL を必要とする友人にそれを優先的に参照させることができます。
コードは非常にシンプルなので、あまり意味のないことには触れず、直接提示するだけです。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
echo httpcopy("http://www.baidu.com/img/baidu_sylogo1.gif");
関数 httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? パス情報($url,PATHINFO_BASENAME) : $file; $dir = パス情報($file,PATHINFO_DIRNAME); !is_dir($dir) && @mkdir($dir,0755,true); $url = str_replace(" ","%20",$url);
if(function_exists('curl_init')) { $ch =curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $temp =curl_exec($ch); if(@file_put_contents($file, $temp) && !curl_error($ch)) { $file を返す; } 他 { false を返す; } } 他 { $opts = 配列( "http"=>配列( "メソッド"=>"GET", "ヘッダー"=>"", 「タイムアウト」=>$timeout) ); $context = stream_context_create($opts); if(@copy($url, $file, $context)) { //$http_response_header $file を返す; } 他 { false を返す; } } } ?> |
サーバーへの別のリモート ダウンロード ファイル
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<フォームメソッド="post">
// 秒単位の最大実行時間 set_time_limit (24 * 60 * 60); if (!isset($_POST['submit'])) die(); // ダウンロードしたファイルを保存するフォルダーはスラッシュで終わる必要があります $destination_folder = 'temp/';
$url = $_POST['url']; $newfname = $destination_folder ; $file = fopen ($url, "rb"); if ($file) { $newf = fopen ($newfname, "wb"); if ($newf) while(!feof($file)) { fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 ); } } if ($file) { fclose($file); } if ($newf) { fclose($newf); } ?> |
以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。