Добрый вечер уважаемые программисты. Есть задача, встроить скрипт скачки файлов в компонент Joomla 1.5.x , я создал отдельный шаблон для данного представления и в нем пытаюсь скриптом выдать файл из ссылки которую передаю туда.
Вот код шаблона:
<?php
defined('_JEXEC') or die('Restricted access');
// $filename = $this->item_url;
$filename = $this->item_url;
// если файла нет
if( !file_exists( './files/'.$filename ) ) {
header ( 'HTTP/1.1 404 Not Found' );
die();
}
// получаем размер файла
$fsize = filesize( './files/'.$filename );
// дата модификации файла для кеширования
$ftime = date( 'D, d M Y H:i:s T', filemtime( './files/'.$filename ) );
// смещение от начала файла
$range = 0;
// пробуем открыть
$handle = @fopen( './files/'.$filename, 'rb' );
// если не удалось
if( !$handle ){
header ( 'HTTP/1.1 404 Not Found' );
die();
}
// если запрашивающий агент поддерживает докачку
if( $_SERVER['HTTP_RANGE'] ) {
$range = $_SERVER['HTTP_RANGE'];
$range = str_replace( 'bytes=', '', $range );
$range = str_replace( '-', '', $range );
// смещаемся по файлу на нужное смещение
if ( $range ) fseek( $handle, $range );
}
// если есть смещение
if( $range ) {
header( 'HTTP/1.1 206 Partial Content' );
} else {
header( 'HTTP/1.1 200 OK' );
}
echo $fsize."<br />";
echo $ftime."<br />";
echo $handle;
print_r($_SERVER);
header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
header( 'Last-Modified: '.$ftime );
header( 'Content-Length: '.($fsize-$range) );
header( 'Accept-Ranges: bytes' );
header( 'Content-Range: bytes '.$range.'-'.($fsize - 1).'/'.$fsize );
switch( $mimetype ) {
case 'pdf' : $ctype = 'application/pdf'; break;
case 'zip' : $ctype = 'application/zip'; break;
case 'doc' : $ctype = 'application/msword'; break;
case 'xls' : $ctype = 'application/vnd.ms-excel'; break;
case 'gif' : $ctype = 'image/gif'; break;
case 'png' : $ctype = 'image/png'; break;
case 'jpeg':
case 'jpg' : $ctype = 'image/jpg'; break;
case 'mp3' : $ctype = 'audio/mpeg'; break;
case 'wav' : $ctype = 'audio/x-wav'; break;
case 'mpeg':
case 'mpg' :
case 'mpe' : $ctype = 'video/mpeg'; break;
case 'mov' : $ctype = 'video/quicktime'; break;
case 'avi' : $ctype = 'video/x-msvideo'; break;
default : $ctype = 'application/octet-stream';
}
header( 'Content-Type: '.$ctype );
readfile('./files/'.$filename);
fclose( $handle );
?>
лежит он в components/com_zoo/views/payment/tpl/download.php , но файл на скачку он выдает 0 КБ
файлы лежат в корне сайта в папке files/
Заметил что если расположить аналогичный скрипт в корне сайта и выполнить, он будет работать и качать файл как полагается. Может Joomla как то ограничивает скачку?? :dash1