2013-06-26 49 views
0

我需要在PHP中創建一個下載鏈接,用於存儲除我的服務器可訪問位置以外的一些文件,即。位於服務器設備本身的文件系統位置。 當我提供超鏈接選項卡中的文件系統位置鏈接似乎有文件系統的位置,但沒有得到下載。可以做什麼。 在此先感謝。如何在PHP中創建下載鏈接

+0

這將永遠不會工作,你只能超鏈接到一個URL而不是一個完整的路徑。否則,任何人都可以訪問您服務器上的敏感數據。 – karmafunk

回答

1
function ob_clean_all() 
{ 
$ob_active = ob_get_length()!== FALSE; 
while($ob_active) 
{ 
    ob_end_clean(); 
    $ob_active = ob_get_length()!== FALSE; 
} 
return FALSE; 
} 

function forcedownload($fileName, $filePath, $fileSize, $fileExt) 
{ 

if(ini_get('zlib.output_compression')) 
ini_set('zlib.output_compression', 'Off'); 

switch($fileExt) 
{ 
    case "pdf": $ctype="application/pdf"; break; 
    case "exe": $ctype="application/octet-stream"; break; 
    case "zip": $ctype="application/zip"; break; 
    case "doc": $ctype="application/vnd.ms-word"; break; 
    case "xls": $ctype="application/vnd.ms-excel"; break; 
    case "ppt": $ctype="application/vnd.ms-powerpoint"; break; 
    case "gif": $ctype="image/gif"; break; 
    case "png": $ctype="image/png"; break; 
    default: $ctype="application/force-download"; 
} 
ob_clean_all(); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header("Content-Type: $ctype"); 
header("Content-Disposition: attachment; filename=".$fileName.";"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ". $fileSize); 
readfile($filePath); 
exit(); 
} 

使用此功能強制下載並傳遞相應的參數。