1. 程式人生 > >PHP強制下載檔案,並輸出檔名與檔案大小資訊

PHP強制下載檔案,並輸出檔名與檔案大小資訊

function getFileSize($url){  //獲取檔案大小函式
	 $url = parse_url($url); 
	 if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
	  fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");
	  fputs($fp,"Host:$url[host]\r\n\r\n");
	  while(!feof($fp)){
	   $tmp = fgets($fp);
	   if(trim($tmp) == ''){
	    break;
	   }else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
	    return trim($arr[1]);
	   }
	  }
	  return null;
	 }else{
	  return null;
	 }
};
$filename = $_REQUEST["url"];  //獲取檔案URL(這裡的url已經是完整的,若不完整需要修改)
$filesize = getFileSize($filename);
$realfilename = substr(strrchr($filename,"/"),1);  //獲取檔名(以url最後一個斜槓之後的內容作為檔名)
header ("Content-Type: application/octet-stream");  //申明下載
header ('Content-Disposition: attachment;filename="'.$realfilename.'"');  //下載檔名
header("Accept-Ranges: bytes");
header("Content-Length: ".$filesize);
readfile ($filename);

這裡的程式碼需要放到一個新的php檔案中,檔案地址可通過表單形式提交到這個php檔案