Проблема с download файлов (не открываются без предварительного сохранения)

Labutin

Новичок
Проблема с download файлов (не открываются без предварительного сохранения)

Скриптом отдаю файл пользователю:
header("Content-type: ".$file["contentType"]);
header("Content-Disposition: attachment; filename=".$file["fileName"]);
header("Content-Length: ".$file["fileSize"]);
echo $file["binaryData"];

Если пользователь выбирает в возникающем диалоге сохранить, то файл благополучно скачивается и потом открывается.
А если пользователь выбирает "Открыть", то приложению, ассоцированному с открываемым файлом передает путь в стиле:
C:\Documents and Settings\Dmitry\Local Settings\Temporary Internet Files\Content.IE5\4J93M2V9\Pic[1].gif
а самого файла Pic[1].gif там нет! :(
Как сделать так, чтобы файл можно было нормально сразу открывать без предворительного сохранения?
 

Steamroller

Новичок
Labutin, надо пользователю Dmitry в Эксплорере кеш почистить (Tools->Internet Options...->General->Delete files..., нажать кнопку "Ок").
 

kvf77

Red Devil
Labutin

это очень интересная особенность эксплорера, которая заключается в том, что он делает 2 запроса при скачивании файла.

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

Как ведет себя эксплорер:
1) скачивает файл во временную директорию (1 запрос)
2) делает зачем-то второй запрос на сервер, видит, что файл устарел и удаляет его, приэтом открывает приложение для просмотра скаченного файла, которого нет, потому как удален

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

Labutin

Новичок
kvf77
Спасибо за разъяснения.
Меня только вот интересует такой вопрос - почему эта проблема возникает не у всех пользователей?
 

kvf77

Red Devil
Labutin

да знакомая ситуевина - на самом деле единственный преличный способ решить эту проблему - давать прямой линк на файл
 

Labutin

Новичок
kvf77
Это понятно. Только вот файлы в базе лежат. Но это уже другая тема...
 

kvf77

Red Devil
Labutin

тогда копай усиленно в сторону РАЗРЕШЕНИЯ кэширования и все такое, чтобы все было как будто обычный файл качается
 

Steamroller

Новичок
Вон оно как....
да знакомая ситуевина - на самом деле единственный преличный способ решить эту проблему - давать прямой линк на файл
А если отлавливать второй запрос от Эксплорера и давать ему 304-й код?
 

kvf77

Red Devil
вот тут товарищ переводит интересный материал про кэширование - почитай
http://phpclub.ru/faq/wakka.php?wakka=TekushhiePopolnenija/PerevodHTTPCaching&v=16w8
 

SiMM

Новичок
> вот тут товарищ переводит интересный материал про кэширование
Ещё бы руки дошли довести начатое до конца ;)
 

kvf77

Red Devil
SiMM

ну так мне Янг сказал что никто не переводит, я тоже начал примерно как ты перевел - потом случайно нашел твой перевод - было обидно - еслиб сразу - мы б вдвоем быстро ее перевели
 
Сверху