|
|
|
| использовала и раньше этот код. все нормально отдавалось - независимо от раширения файла открывалось окошко с предложением скачать файл. но что-то сломалось - выдает содержимое в браузер, причем картинки в виде кода. или на сервере какие-то настойки изменились? тест делаю с небольшими файлами, на сервер они закачиваются нормально. надо, чтоб и отдавались.
<?
function file_download11($filename, $folder) {
// Create base URL
$base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
$base_url = $base_root .= '://'. $_SERVER['HTTP_HOST'];
// $_SERVER['SCRIPT_NAME'] can, in contrast to $_SERVER['PHP_SELF'], not
// be modified by a visitor.
if ($dir = trim(dirname($_SERVER['SCRIPT_NAME']), '\,/')) {
$base_path = "/".$dir;
$base_url .= $base_path;
$base_path .= '';
}
else {
$base_path = '/';
}
$path = $_SERVER["DOCUMENT_ROOT"].$base_path.$folder."/".$filename;
//echo $path; exit;
if (file_exists($path)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
unlink($path);
die;
}
}?>
|
может, виноват safe_mode? This function returns FALSE for files inaccessible due to safe mode restrictions. | |
|
|