Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранение файла с сервера на локальный компьютер
 
 автор: kostya   (10.03.2010 в 20:40)   письмо автору
 
 

Не получается сохранить файлы (.doc .docx .txt) с сервера на локальный компьютер.
Делаю по такому принципу:
$file_name = $_GET['fn'];
    
    if(ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) $UserBrowser = "Opera";
    elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])) $UserBrowser = "IE";
    else $UserBrowser = '';
    
    $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ? 'application/octetstream' : 'application/octet-stream';
    
    header('Content-Type: ' . $mime_type);
    header('Content-Encoding: none');
    header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    if ($UserBrowser == 'IE') {
        header('Content-Disposition: inline; filename="'.$file_name.'"');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
    }
    else {
        header('Content-Disposition: attachment; filename="'.$file_name.'"');
        header('Pragma: no-cache');
    }    
    $path = 'http://'.$_SERVER['HTTP_HOST'].'/files/'.$file_name;
    fpassthru(fopen($path,"rb"));

В итоге вылезает ошибка, типо заголовки уже были отправленны:
Warning: Cannot modify header information - headers already sent by...

Потом дописал в файл .htaccess такую фишку php_flag output_buffering 1
Файлы начали скачиваться, но с непонятной кодировкой, вместо нормального текста непонятные символы.
И как бороться с этим делом, никак узнать не могу.
Подскажите пожалуйста если кто нибудь знает.

  Ответить  
 
 автор: .heed   (10.03.2010 в 22:54)
 
   для: kostya   (10.03.2010 в 20:40)
 

вместо php_flag output_buffering 1 нужно было разбираться почему headers already sent by
поиск таких слов здесь помогает.
Или возможно вам поможет если знаете что такое BOM и как с этим бороться.


если не решили оставаться только на той версии php которая сейчас , то сразу думайте чем заменять ereg
чтобы в новых версиях не возникло проблем.
А вообще я-бы сначала проверял есть-ли вообще $_GET['fn'], и что в ней передав ../../ должно быть можно посмотреть что за главная страничка того сайта :) с которого умыкаете контент

  Ответить  
 
 автор: Kostya   (10.03.2010 в 23:50)   письмо автору
 
   для: .heed   (10.03.2010 в 22:54)
 

>вместо php_flag output_buffering 1 нужно было разбираться почему headers already sent by
>поиск таких слов здесь помогает.
>Или возможно вам поможет если знаете что такое BOM и как с этим бороться.

Я поработаю над этим, спс.

>А вообще я-бы сначала проверял есть-ли вообще $_GET['fn'], и что в ней передав ../../ должно быть можно посмотреть что за главная страничка того сайта :) с которого умыкаете контент

Это мой сайт, я контент не мыкаю :)
Вот на этой страничке http://oki.ivanstyle.ru/events/tender/0/0 ссылки на файлы, можете посмотреть )
В переменную $_GET['fn'] передаётся имя файла, например text.txt

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования