file download problems
делаю download manager, download-итса может фаил любого типа прописываю так:
header("Cash Control:no-store, no-cache");
header("Content-Type: application/".$ext); ????
header("Content-length: ".filesize($path)."");
header('Content-disposition: attachment; filename="'.$path.'"');
в мозили всё ok, опера сохраняет с расширением html (сама преписывает)
а IE вообше не определяет тип фаила и так сеивит.
по моему дело в header-е.
помогите пожалуста и если можно укажите на хорошую литературу о header.
Код:
Header("Content-Type: application/force-download; name={$filename}");
Header("Content-Transfer-Encoding: binary");
Header("Content-Length: ".filesize($filename));
Header("Content-Disposition: attachment; filename={$filename}");
Header("Content-Transfer-Encoding: binary");
Header("Content-Length: ".filesize($filename));
Header("Content-Disposition: attachment; filename={$filename}");
А так?
так, мозила сохранила его как тот php фаил, через которы я парсю код. а фаил пуст :(
Код:
Header("Content-Type: application/octet-stream; name={$filename}");
Header("Content-Transfer-Encoding: binary");
Header("Content-Length: ".filesize($filename));
Header("Content-Disposition: attachment; filename={$filename}");
Header("Content-Transfer-Encoding: binary");
Header("Content-Length: ".filesize($filename));
Header("Content-Disposition: attachment; filename={$filename}");
а так?
не хочет нормально.
Сдается мне что тут дело не в заголовках... Как вы отдаете файл?
есть фаилы, некоторые в htdocs некоторые выше. надо сделать так чтобы, принимая path (несмотря на тип фаила) скачать любой фаип, коректно.
код в студию
{
header("Content-length: ".filesize($path)."");
header("Cash Control:no-store, no-cache");
header("Content-Type: Multipart/alternative");
header("Content-Transfer-Encoding: Binary");
header('Content-disposition: attachment; filename="'.$path.'"');
}
вот результат
Content-Type лучше определять в зависимости от типа файла.
И исправь Cash Control на Cache Control, и добавь заголовки Expires и Pragma: no-cache
Код:
header("Cache Control: no-store, no-cache");
header("Expires: Mon, 01 Jan 1970 00:00:00 GMT");
header("Pragma: no-cache");
header("Expires: Mon, 01 Jan 1970 00:00:00 GMT");
header("Pragma: no-cache");
2hexedit :)
Цитата: HexEdit
Для начала, выведи просто $path и посмотри что у тебя задано.
Content-Type лучше определять в зависимости от типа файла.
И исправь Cash Control на Cache Control, и добавь заголовки Expires и Pragma: no-cache
Content-Type лучше определять в зависимости от типа файла.
И исправь Cash Control на Cache Control, и добавь заголовки Expires и Pragma: no-cache
Код:
header("Cache Control: no-store, no-cache");
header("Expires: Mon, 01 Jan 1970 00:00:00 GMT");
header("Pragma: no-cache");
header("Expires: Mon, 01 Jan 1970 00:00:00 GMT");
header("Pragma: no-cache");
Ты вообще понял в чем вопрос заключается? Не запрет кэширования, а отдача бинарника. Каким местом соотносится к этому тот код что ты написал?
Я просто исправил.. Кстати у меня были проблемы с передачей файла без отмены кэширования.
Кстати есть еще вариант - поставь в ФФ плагин LiveHttpHeaders и посмотри какие заголовки тебе присылают сервера при скачивании файла (любой сервер выбери где можно скачать файл - тот же sourceforge.net например)
Цитата: RussianSpy
Может у тебя выводится что-нибудь на экран перед заголовками....
Врят ли... У него же все-таки качается файл, пусть и не тот
1. исходя из browser-а надо было отослать правильный header.
2.задать chuncksize. (чтоб перед закачкой много не думал).
всётоки проблема была в mime type-е ;)
произошёл такой глюк:
file download system работает так:
index.php подключает download.php которы лежит не в htdocs (а выше),
в download.php вызываетса функциа закачки и не происходит ничего. :(
если dowload.php положить в htdocs токда всё ок, но в этом случае можно скачать любой фаил на сервере, а это как вы понимаете не коректно.
можно ли как небуть убить этот баг?
А если положить файл еще ниже htdocs? Например, в htdocs/userdl/
Цитата: Proger_XP
Выше htdocs ничего не может быть, т.к в нем могут лежать только те файлы, которые доступны извне
А если положить файл еще ниже htdocs? Например, в htdocs/userdl/
А если положить файл еще ниже htdocs? Например, в htdocs/userdl/
Тебе не кажется что ты написал чушь?
Может быть :) Я хотел сказать, что open_basedir может ограничить доступность скриптов, подключить его не из этой папки нельзя
privete лежит в /srv/www/upload
public лежит в /srv/www/htdocs/upload
доступ до privete возможен только через функцию. вот и вся система.
а может ли быть конфликт header-ов? у HTML скрипта же тоже есть какиета header-и?
да sorry я ошибся но могут ли прити в конфликт header-ы?