Witam.
Mam skrypt
download_file.php, który powoduję pobranie pliku z serwera po jego ID
Nie wiem dlaczego mi nie działa.
Jak nie ma pliku w $dir = "files/$id_user/"; to wyświetla komunkat, że nie ma.
Jak jest to jest puste okno przeglądarki i nic.
Co może być nie tak? Może potrzeba jakiś ustawień .htaccess ?? albo ustawienia na serwerze. Sam nie wiem.
Proszę o pomoc.
<?php session_start();
include ('config.php'); // plik z konfiguracją strony
include('core.php'); // plik z funkcjami
$id = check_input($_GET['idf']);
$sql = mysql_query("SELECT * FROM `gu_files` WHERE `id_file` = '$id'");
while ($rek = mysql_fetch_array($sql)) {
$id_file = $rek['id_file'];
$id_user = $rek['id_user'];
$nazwa_pliku = $rek['nazwa_pliku'];
$rozszerzenie = $rek['rozszerzenie'];
$hash = $rek['hash'];
$size = round($rek['size'] / 1024,1) . ' KB';
}
if ($_SESSION['id'] == $id_user) {
$filename = $hash . '.' . $rozszerzenie;
$dir = "files/$id_user/";
if(ini_get('zlib.output_compression')){ ini_set('zlib.output_compression', 'Off'); }
$file_extension = strtolower(substr(strrchr($filename,"."),1));
if( $filename == ""){
echo "<html><title>Document Downloads</title><body>Error: No such file to download.</body></html>";
exit;
} elseif (!file_exists($dir.$filename)){
echo "<html><title>Document Downloads</title><body>Error: File ".$dir.$filename." Not Found</body></html>";
exit;
}
switch( $file_extension ){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "docx": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "xlsx": $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;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
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=\"".basename($nazwa_pliku.".".$rozszerzenie)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($dir.$filename));
//readfile($dir.$filename);
header("X-Sendfile: $dir$filename");
exit();
}
else {
echo "<html><title>Document Downloads</title><body>Error: File ".$dir.$filename." is Not Your!</body></html>";
}
?>