Download файла

iii

Guest
Download файла

Отдаю файл из базы пользователю.
Очень хочется, что бы при любом типе файлов броузер предлагал бы сохранить его на диске.

посылаю заголовки:

header("Cache-control: private");
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=".$name);

При этом IE5.5 все равно открывает doc файлы а не предлагает их сохранить.

Подскажите,plz, чего можно сделать???
 

tony2001

TeaM PHPClub
в поиск по словам из твоих хидеров.
хва уже задавать один и тот же вопрос, пора уже научиться искать.
 

iii

Guest
Автор оригинала: tony2001
в поиск по словам из твоих хидеров.
хва уже задавать один и тот же вопрос, пора уже научиться искать.
Именно с этого я и начал.
Терпеливо просеял все ответы где людей посылают в поиск по форуму, и нашел ссылку именно на такую последовательность хдеров.
Только вот чего то не работает она ж(
 

Arthur

Good Member
У меня для Екселя работает такая хрень:

header("Accept-Ranges: bytes");
header("Content-Type: hren/vsyakaya");
header("Content-Disposition: attachment; filename=\"".$price."\"");
 

Ямерт

The Old One
Выдавай-ка лучше всё в ZIPованном виде. Тогда точно будет сохранять, а не открывать. Лично я не смог заставить ИЕ сохранять выданный DOC.
 

iii

Guest
Автор оригинала: Ямерт
Выдавай-ка лучше всё в ZIPованном виде. Тогда точно будет сохранять, а не открывать. Лично я не смог заставить ИЕ сохранять выданный DOC.
Никто не сталкивался с таким глюком:
Страничка:

1)start.html

<html>
<head>
</head>
<frameset rows="137,*" FRAMEBORDER="0" >
<frame src="top.php">
<frameset cols="200,*" FRAMEBORDER="0">
<frame src="left.php" name="aaa" NORESIZE>
<frame src="main.php" name="sss">
</frameset>
</frameset>
</html>

2) в main.php делаем ссылку на скрипт getbinary.php

...
<a href="getbinary.php?get=file.doc"> aaaaA</a>
......

3) в getbinary.php шлем заголовки:
....
header("Content-disposition: attachment; filename=\"$name\"");
header("Content-type: application/unknown");
echo $data;
.....

4) При клике по ссылке предлагается сохранить файл start.html
Если выбрать "Открыть этот файл из текущего места"
то Предлагается сохранить файл getbinary.php?get=file.doc
если и тут выбрать "Открыть этот файл из текущего места"
ТО предлагается сохранить уже сам загружаемый файл.

Наверно я что то не понимаю.
Это так и должно быть?
 

Arthur

Good Member
Попробуй прописать target
<a href="getbinary.php?get=file.doc" target='sss'> aaaaA</a>
 

iii

Guest
Автор оригинала: Arthur
Попробуй прописать target
<a href="getbinary.php?get=file.doc" target='sss'> aaaaA</a>
ПРОбовал. _top,_parent,_blank - тоже.
При _blank сразу предлагает сохранить getbinary.php?get=...
Но оставляет за собой незакрытое окно в котором отображается сообщение о том, что ресурс не найден
 

Mammoth

Guest
По-моему, это глюк ИЕ. Должно лечиться так: вместо
PHP:
header("Content-disposition: attachment; filename=\"$name\"");
шлем заголовок
PHP:
header("Content-disposition: filename=\"$name\"");
Конечно, перед этим желательно проверить юзер_агента...
 

iii

Guest
Автор оригинала: Mammoth
По-моему, это глюк ИЕ. Должно лечиться так: вместо
PHP:
header("Content-disposition: attachment; filename=\"$name\"");
шлем заголовок
PHP:
header("Content-disposition: filename=\"$name\"");
Конечно, перед этим желательно проверить юзер_агента...
1) при target='sss' Все тоже самое, сначала start.html протом сам скрипт и т.д.

2) если испрользовать
header("Content-disposition: filename=\"$name\"");
То эта зараза не предлагает его сохранить, а просто открывает файл в окне ехплоррера.
 

Larson

Новичок
А если так попробовать:
PHP:
header("Content-Type: application/download; name=$file");
header("Content-Lenght:".filesize($file));
header("Content-Disposition: filename=$file");
 

Mammoth

Guest
Я надеюсь, что header("Content-type: application/unknown"); ты тоже делал?
 

Arthur

Good Member
Автор оригинала: Mammoth
По-моему, это глюк ИЕ. Должно лечиться так: вместо
PHP:
header("Content-disposition: attachment; filename=\"$name\"");
шлем заголовок
PHP:
header("Content-disposition: filename=\"$name\"");
Извини, но ты не прав

ПРОбовал. _top,_parent,_blank - тоже.
При _blank сразу предлагает сохранить getbinary.php?get=...
Но оставляет за собой незакрытое окно в котором отображается сообщение о том, что ресурс не найден
может делать window.close() и не трахаться.

Если честно щаз с фреймами возится некогда. Может завтра посмотрю чё по чём.
 

Mammoth

Guest
Вариант: для типа "application/unknown" уже определены какие-то действия. Лечение: генерим Content-type.
 

Arthur

Good Member
Как и обещал, попытался разобраться с твоей проблемой.
Вот так у меня работает:

getbinary.php
<?
$name=$get;
header("Accept-Ranges: bytes");
header("Content-Type: hren/vsyakaya");
header("Content-Disposition: attachment; filename=\"".$name."\"");
echo "test";
?>

main.php
<?
<a href="getbinary.php?get=file.doc"> aaaaA</a>
?>
 

iii

Guest
Автор оригинала: Arthur
Как и обещал, попытался разобраться с твоей проблемой.
Вот так у меня работает:

getbinary.php
<?
$name=$get;
header("Accept-Ranges: bytes");
header("Content-Type: hren/vsyakaya");
header("Content-Disposition: attachment; filename=\"".$name."\"");
echo "test";
?>

main.php
<?
<a href="getbinary.php?get=file.doc"> aaaaA</a>
?>
А main.php при этом у тебя фреймовый???
Сделал я так, те же я№ц# вид сбоку:
Сперва предлагает сохранить start.html, затем сам скрипт, ну а затем только файл ж((((((
 

Arthur

Good Member
Странно...
у меня фреймовый и всё работает как часы...
Так что я сдаюсь...
Может браузер кривой ? у меня ИЕ 5.0. Хм... хотя вряд Ли...
В общем ничем не могу помочь более. Сорри..
 
Сверху