php带密码功能并下载远程文件保存本地指定目录 修改加强版 |
本文标签:php,远程文件,保存本地 ![]() 原作者BlueStyle 提示 改进地方有 以前的算法是等文件下载完才计算, 现在这个直接在在获取文件时候就计算大小 加了容错语句 增加了判断目录,没有目录自动创建 把计算文件大小的算法换了个 以前的那个光计算文件大小就7行代码, 现在这个只要两行 转载请保留原作者版权信息,由于作者是政府人员,为不惹麻烦,请保留此段文字完整性 html代码: 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>快乐飞扬博客 - 远程文件下载</title> </head> <body > <form method="post"> <li>File: <input name="url" size="40" /> <input name="submit" type="submit" /></li> <li>Pass: <input name="password" type="password" /></li> </form> PHP代码: 复制代码 代码如下: <?php # Copyright 2010 快乐飞扬 # http://www.klfy.org/ 供新手学习参考 set_time_limit (0); //不限时 24 * 60 * 60 $password = admin; //管理密码 $pass = $_POST[password]; if ($pass == $password) { class runtime { var $StartTime = 0; var $StopTime = 0; function get_microtime(){list($usec, $sec) = explode( , microtime()); return ((float)$usec + (float)$sec);} function start() {$this->StartTime = $this->get_microtime();} function stop() {$this->StopTime = $this->get_microtime();} function spent() { return round(($this->StopTime - $this->StartTime) * 1000, 1);} } $runtime= new runtime; $runtime->start(); if (!isset($_POST[submit])) die(); $destination_folder = ./Download/; // 下载的文件保存目录 。必须以斜杠结尾 if(!is_dir($destination_folder)) //判断目录是否存在 mkdir($destination_folder,0777); //若无则创建,并给与777权限 windows忽略 $url = $_POST[url]; $headers = get_headers($url, 1); //得到文件大小 if ((!array_key_exists("Content-Length", $headers))) {$filesize=0; } $newfname = $destination_folder . basename($url); $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);} $runtime->stop(); echo <br /><li>下载耗时:<font color="blue"> .$runtime->spent(). </font>微秒,文件大小<font color="blue"> .$headers["Content-Length"]. </font>字节</li>; echo <br /><li><font color="red">下载成功! .$showtime=date("Y-m-d H:i:s").</font></li>; }elseif(isset($_POST[password])){ echo <br /><li><font color="red">密码错误!请从新输入密码!</font></li>; } ?> </body> </html> |