2013-06-26 3 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(); 
} 

Используйте эту функцию для принудительной загрузки и передачи соответствующих параметров.