Понимаю, что задача распространенная, но я столкнулся с проблемой, которую пока никак не могу разрешить. Необходимо вытаскивать файлик из БД (MSSQL) и отдавать ее пользователю. Вот код, который это делает: Код (Text): function get_file($id) { global $current_conn; $sql = "SELECT bpmp_o_data_data, bpmp_o_data_name FROM bpmp_o_data WHERE bpmp_o_data_id=".$id; if ($rs = odbc_exec($current_conn,$sql)) { $fa = odbc_fetch_array($rs); } $data = $fa['bpmp_o_data_data']; $fsize = strlen($data); header("HTTP/1.1 200 OK"); header("Content-Length: ".($fsize)); $fname = explode(".", $fa['bpmp_o_data_name']); $fext = array_pop($fname); $fname = implode(".", $fname); header('Content-Disposition: attachment; filename="'.$fa['bpmp_o_data_name'].'"'); switch($fext) { case "pdf": header("Content-type: application/pdf"); break; case "doc": header("Content-type: application/msword"); break; case "xls": header("Content-type: application/vnd.ms-excel"); break; case "ppt": header("Content-type: application/vnd.ms-powerpoint"); break; default: header("Content-type: application/octet-stream"); break; } echo($data); } При этом, файл отдается пользователю. Открывается окошко с предложением выбора: открыть файл или сохранить его. При сохранении файла на диск все ок, при открытии же запускается необходимая программа (word/excel/winrar и т.д.) и появляется ошибка типа "Невозможно открыть C:\Documents And Settings\...\имя_файла[1].rar". Подскажите что с этим делать?
Указанный в сообщении об ошибке путь ведет в папку кэша IE (Temporary Internet Files\Content.IE5\...). Этот файл просто отсутствует в указанной папке. Почему такое может быть?
Извиняюсь, не правильно понял проблему. Подумал, что файлы не открываются вообще. По-моему ничего с этим не поделать. Это броузер сохраняет файл в свой временный каталог и за те секунды (доли секунд) между тем как броузер запустил нужную программу и эта программа начала открывать файл, броузер успевает его удалить Это предположение. Может еще у кого будут другие мнения.
можно и через телнет запрос очень простой GET /script?params HTTP/1.1 Host: site.ru и лишний перевод строки в конце но я бы посоветовал плагин livehttpheaders к мозилле
вот эти - cache-control, expires, Pragma - надо убрать. из-за них эксплорер не может открыть файл, поскольку его не кэширует. сессии используются?