Original author BlueStyle suggested improvements:
The previous algorithm was to wait until the file was downloaded before calculating it.
Now this algorithm calculates the size directly when getting the file
Added fault tolerance The statement
adds a judgment directory. If there is no directory, it will be created automatically.
Change the algorithm for calculating the file size.
The previous one only required 7 lines of code to calculate the file size.
Now this one only needs two lines.
Please keep the copyright information of the original author when reprinting. Since the author is a government employee, in order not to cause trouble, please keep the integrity of this text
html code:
Copy code The code is as follows:
Happy Feiyang Blog - Remote File Download
PHP code:
Copy code The code is as follows:
# Copyright 2010 Happy Flying
# http://www.klfy.org/ For novice learning reference
set_time_limit ( 0); //No time limit 24 * 60 * 60
$password = 'admin'; //Management password
$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/'; // The directory where downloaded files are saved. Must end with a slash
if(!is_dir($destination_folder)) //Determine whether the directory exists
mkdir($destination_folder,0777); //If not, create it and give 777 permissions. Windows ignores
$url = $_POST['url'];
$headers = get_headers($url, 1); //Get the file size
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 '
Download time: '.$runtime->spent().' Microseconds, file size '.$headers["Content-Length"].' bytes';
echo '
Download successful! '.$showtime=date("Y-m-d H:i:s").'';
}elseif(isset($_POST['password'])){
echo '
Wrong password! Please re-enter your password!';
}
?>
http://www.bkjia.com/PHPjc/321903.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321903.htmlTechArticleOriginal author BlueStyle prompts for improvement: the previous algorithm waited for the file to be downloaded before calculating. Now this is obtained directly When calculating the file size, fault tolerance statements are added to increase judgment...