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

Форум PHP

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

 

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

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

тема: отдача файла
 
 автор: admiral   (26.03.2010 в 10:58)   письмо автору
 
 


       $f = $_SERVER['DOCUMENT_ROOT']."/files/file.rtf";
    header ("Content-Type: application/rtf;");
    header ("Accept-Ranges: bytes");
    header ("Content-Length: ".filesize($f));
    header ("Content-Disposition: attachment; filename=$f");
    readfile($f);


правильно ли я отдаю файл на скачку. Спрашиваю потому что в 2007 офисе открывается пустой окно MS Word без какого-либо документы, а если на компе установлен 2003 все норм открывает

  Ответить  
 
 автор: Саня   (26.03.2010 в 13:24)   письмо автору
 
   для: admiral   (26.03.2010 в 10:58)
 

Для чего нужен filename?

  Ответить  
 
 автор: admiral   (26.03.2010 в 14:34)   письмо автору
 
   для: Саня   (26.03.2010 в 13:24)
 

Я так пологаю чтобы задать имя открываемому файлу. Кстати я вот что обнаружил. Файл который отдает мне браузер как будто бы берется из кеша(это только в опере), а если зайди в ту дирректорию и открыть файл этот самостоятельно, то там все нормально открывается с новыми данными. Из-за чего такое может быть?

  Ответить  
 
 автор: Саня   (26.03.2010 в 14:35)   письмо автору
 
   для: admiral   (26.03.2010 в 14:34)
 

> Я так пологаю чтобы задать имя открываемому файлу.
А у вас что задаётся?

  Ответить  
 
 автор: admiral   (26.03.2010 в 14:45)   письмо автору
 
   для: Саня   (26.03.2010 в 14:35)
 

А понял. Задается путь к файлу. Но в filename пробовал просто путь вписать, все равно же та же басня. В опере когда выдается окно для загрузки, и если нажать открыть, то выдается самый первый, видимо из кеша файл, а если в этом же окне загрузки сохранить, а потом открыть, то файл свежий.

  Ответить  
 
 автор: Саня   (26.03.2010 в 14:48)   письмо автору
 
   для: admiral   (26.03.2010 в 14:45)
 

> Для чего нужен filename?
>> Я так пологаю чтобы задать имя открываемому файлу.

> А у вас что задаётся?
>> Задается путь к файлу.

Чуете разницу?

  Ответить  
 
 автор: admiral   (26.03.2010 в 14:52)   письмо автору
 
   для: Саня   (26.03.2010 в 14:48)
 

Саня, разница в том что я указывал путь к файлу, а не имя. Правильно?
Поэтому сделал так -
header ("Content-Disposition: attachment; filename=name.rtf");

Все равно в опере таже проблема. Или я опять что-то не понял?

  Ответить  
 
 автор: Саня   (26.03.2010 в 15:25)   письмо автору
 
   для: admiral   (26.03.2010 в 14:52)
 

Это во-первых.

А второе в том, что опера действительно странно кеширует связь между скаченным файлом и ссылкой, по которой он был взят. Странность в том, что она не реагирует на заголовки, управляющие кешированием.

Как вариант решения проблемы, можно в ссылку добавлять случайный параметр.

  Ответить  
 
 автор: admiral   (26.03.2010 в 16:55)   письмо автору
 
   для: Саня   (26.03.2010 в 15:25)
 

Хм. Я сразу предусмотрел про случайный параметр, вот так

$newfile = $_SERVER['DOCUMENT_ROOT']."/tempfiles/result/".$rand.".rtf";
header ("Content-Length: ".filesize($newfile));
header ("Content-Disposition: attachment; filename=".$rand.".rtf");
readfile($newfile);


Где $rand это случайное число. И все равно опера тупит.

  Ответить  
 
 автор: Саня   (26.03.2010 в 17:48)   письмо автору
 
   для: admiral   (26.03.2010 в 16:55)
 

Да не в названии файла, а в ссылке на скачивание.

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

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