Автор Тема: Ошибка после выполнения header();  (Прочитано 7747 раз)

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

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« : 21 Августа 2003, 11:34:09 »
Вообщем у меня такая тема:
При обращении к странице должно вылетать окошко с предложением загрузить файл:
вот код:
--------------------------------------------------------------------------------
header("Content-Disposition: attachment; filename=" . basename($down_file));
header("Content-Length: " . filesize($down_file));
header("Content-Type: " . filetype($down_file));
readfile("$down_file");
--------------------------------------------------------------------------------
где $down_file путь к файлу (например: $down_file="donwload/file.zip";). Файл 100% существует. Все хеадеры находятся в самом начале кода.
При загрузке страницы агент предлагает скачать файл.
Тут следует сделать ремарку. Корректно работают только MSIE и Opera, т.е. предлагают сохранить файл с именем file и предлагают тип файла WinZip (т.е. .zip). Netscape же предлагает имя файла file.zip, а расширение .php ! Может мне кто-нибудь объяснит?
Вернемся к нашим баранам...
Косяк кроется в MSIE. Открывается окно, где предлагается открыть/сохранить файл. Жмем сохранить, ОК.
После сохранения, страницы сайта начинают медленно грузиться, иногда не подгружаются файлы стилей (.css) ...
В чем есть косяк? Что я не так делаю? Проблема в сервере или в клиенте? В NN и в Opera все работает ...

Оффлайн Дмитрий Попов

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 264
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.programmist.spb.ru
Ошибка после выполнения header();
« Ответ #1 : 21 Августа 2003, 12:21:37 »
DiJay
Цитировать
Тут следует сделать ремарку. Корректно работают только MSIE и Opera, т.е. предлагают сохранить файл с именем file и предлагают тип файла WinZip (т.е. .zip). Netscape же предлагает имя файла file.zip, а расширение .php ! Может мне кто-нибудь объяснит?


Mozilla смотрит на расширение файла, с которого начинается скачка. Что бы этого не было передавайте путь к файлу примерно как http://site.ru/downloads.php/file.zip


А проблема вряд-ли в сервере.
 За Родину! За Россию!
SendMail для любого хостинга.

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #2 : 21 Августа 2003, 13:11:58 »
Что-то не канает!
Выдет ошибку:
Warning: filesize(): Stat failed for http://site.ru/downloads/file.zip (errno=2 - No such file or directory) in header.php on line 21

Хотя файлик там 100% лежит!!! И по ссылке http://site.ru/downloads/file.zip\'>file.zip полностью доступен !

Если нельзя такие пути пихать в filesize(); то куда прописывать путь-то?

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #3 : 21 Августа 2003, 13:18:37 »
не такая тема точно не канает!
Если я не прав, то напиши свой код скрипта ...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #4 : 21 Августа 2003, 14:04:37 »
:-)))))))))))
Цитировать
DiJay:
Stat failed for http://site.ru/downloads/file.zip

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #5 : 21 Августа 2003, 14:05:49 »
он имел в виду  не $down_file - это у тебя должно оставаться таким, как и было.

а ссылку на закачку этого файла надо делать такого вида, как Дмитрий написал.

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #6 : 21 Августа 2003, 14:08:13 »
readfile("http://site.ru/downloads/file.zip");

так что-ли?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #7 : 21 Августа 2003, 14:23:26 »
нет.
ссылка имеется в виду та, на которую тыкает пользователь, чтобы скачать файл.

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #8 : 21 Августа 2003, 14:41:07 »
http://site.ru/downloads/file.zip\'>file.zip
так что-ли?
да мне не надо так! Мне надо обработать скрипт перед началом закачки файла!

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #9 : 21 Августа 2003, 14:42:54 »
товарисчи!
не парьте меня!
Напишите просто скрипт, пожалуйста :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #10 : 21 Августа 2003, 15:06:10 »
Цитировать
DiJay:
Мне надо обработать скрипт перед началом закачки файла!

а теперь медленно и по-русски.
Чтобы написать тебе скрипт (что, кстати, никто не обязан), надо сначала понять, че ты хочешь.
а из твоих бессвязных стенаний это неясно.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #11 : 21 Августа 2003, 15:44:34 »
Цитировать
DiJay:
Напишите просто скрипт,

:beer: x 2
AS IS...

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #12 : 22 Августа 2003, 06:22:21 »
Объясняю медленно, по-русски!
пусть есть ссылка file
а вот код download.php :
----------------------------------------------------------------------
//предлагаем скачать файл
header("Content-Disposition: attachment; filename=" . basename($down_file));
header("Content-Length: " . filesize($down_file));
header("Content-Type: " . filetype($down_file));
readfile("$down_file");
//скидываем инфу в базу данных
mysql_connect($db_host, $db_log, $db_pass);
$res_ins=mysql_db_query($db,"INSERT INTO $table_name (uid, file, date) VALUES (\'$uid\', \'$down_file\', \'$current_date\')");
mysql_close();

$down_file="";
?>

--------------------------------------------------------------------
Все параметры заданы. Файл по адресу downloads/file.zip существует 100%!
Так вот, скажите мне, куда мне пихать http://site.ru/download/file.zip ???

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #13 : 22 Августа 2003, 08:32:08 »
Цитировать
DiJay:
пусть есть ссылка file

сюда

только не
http://site.ru/download/file.zip
а
http://site.ru/downloads.php/file.zip

Оффлайн DiJay

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 65
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ошибка после выполнения header();
« Ответ #14 : 22 Августа 2003, 08:55:50 »
значит, чтобы избавиться от глюка с Нетскейпом нужно писать так:
-------------------------------------------------------------------------
$u_agent=getenv(HTTP_USER_AGENT);
$h_host=getenv(HTTP_HOST);

if(stristr($u_agent,"Netscape")!=false) { header("Location: http://".$h_host."/".$down_file); }
else {
header("Content-Disposition: attachment; filename=" . basename($down_file));
header("Content-Length: " . filesize($down_file));
header("Accept-Ranges: bytes");
header("Content-Type: " . filetype($down_file));
readfile("$down_file");
}

//а чтобы не глюкал MSIE нужно добавить:
exit;
--------------------------------------------------------------------------
Флаг вам в руки ребяты:) У меня все работает!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28