PHP強制下載檔案,並輸出檔名與檔案大小資訊
阿新 • • 發佈:2019-01-07
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檔案