0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 1161 Просмотров
*

panasenko

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Добрый вечер уважаемые программисты. Есть задача, встроить скрипт скачки файлов в компонент Joomla 1.5.x , я создал отдельный шаблон для данного представления и в нем пытаюсь скриптом выдать файл из ссылки которую передаю туда.

Вот код шаблона:
Код: php
<?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
*

simpolmix

  • Захожу иногда
  • 141
  • 4 / 0
Проверь доступ на запись к папке
*

panasenko

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Проверь доступ на запись к папке

К какой именно папке?

Если вы имеете ввиду папку с файлами, то у нее права 0755. Но самое интересное в том что срипт который в корне сачивает файл нормально из этой же папки.
« Последнее редактирование: 08.10.2009, 20:55:16 от panasenko »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема со входом в Админ панель после переноса сайта

Автор Vlad Ermolaev

Ответов: 11
Просмотров: 830
Последний ответ 12.12.2019, 15:48:25
от SeBun
[Решено] Проблема с авторизацией Invalid Token

Автор treX

Ответов: 100
Просмотров: 83386
Последний ответ 06.10.2019, 16:55:45
от PaLyCH
Проблема c MobileJoomla

Автор alexmishka

Ответов: 0
Просмотров: 795
Последний ответ 25.02.2018, 20:32:10
от alexmishka
Вопрос при переходе на https/ Проблема с внутренними ссылками

Автор krot

Ответов: 4
Просмотров: 1094
Последний ответ 06.02.2018, 09:21:33
от krot
два файла htaccess

Автор panzerfater

Ответов: 0
Просмотров: 1168
Последний ответ 24.11.2017, 16:31:54
от panzerfater