![]() |
![]() |
Cool 26.04.2004 - 21:36 |
Задача тривиальна: скрипту передается некий параметр, в соответсвии с которым он формирует файл,сохраняет его на хард, считывает его полностью в бинарном режиме, закрывает, удаляет, отправляет содержимое пользователю поставив определенный header. Фишка в том, что файл отправляется нормально, но только имя он имеет такое же как называется скрипт. А как бы это изменить? Например во многих мп3 каталогах такой же алгоритм (разве что файл не формируется на лету и не удаляется), но имя у файла соответствует содержимому. Как? |
Deflorator 1 - 26.04.2004 - 21:50 | код в студию |
Cool 2 - 26.04.2004 - 22:10 |
Так, процесс формирования файла опустим, вот то, что выплевывает файл. Скрипт называется word.php соответственно на выходе он предлагает мне word.doc $filename='myfilename.doc'; $f=fopen($filename,'rb'); $val=''; while(!feof($f)) { $val.=fread($f,1000); } fclose($f); Header("Content-type: application/msword"); echo $val; |
Deflorator 3 - 26.04.2004 - 22:57 | СПАСИБО, скопировал :) |
Bulbazavr 4 - 27.04.2004 - 12:07 |
<?php $filename='myfilename.doc'; $f=fopen($filename,'rb'); $val=''; while(!feof($f)) { $val.=fread($f,1000); } fclose($f); header('Content-type: application/msword'); header('Content-Disposition: attachment; filename="downloaded.doc"'); echo $val; ?> |
Cool 5 - 27.04.2004 - 12:12 | Bulbazavr, пасиб. Первый раз про такой заголовок слышу, надо будет почитать. |
Cool 6 - 27.04.2004 - 12:15 | Во блин. Понимаю когда JS по разному работает в разных браузерах, но чтобы заголовки... В Опере все работает нормально, IE же выплевывает word.doc |
buster 7 - 27.04.2004 - 12:31 | Заголовки-то работают одинаково. Реакции браузеров - отличаются. |
Bulbazavr 8 - 27.04.2004 - 12:44 | У меня IE 6.00.280 работает прекрасно. |
Cool 9 - 27.04.2004 - 19:04 | а, всё, извиняюсь, ступил, работает... |
DIVЕR 10 - 27.04.2004 - 19:56 |
А я вот с этим ещё не работал, поэтому интересно вот что: получается, что при обращении, ну допустим, к архиву mp3, (чаще ведь указывается путь с виртуальной папкой, типа SessionID, а не к реальному файлу) на сервере программа каждый раз запускается, читает несколько-меговый файл в память, посылает Content-Disposition и делает echo?! Сервак не "устаёт" читать-выдавать много-меговые файлы? =) Ведь нагрузка-то получается нехилая... Или такое возможно только так и больше никак?.. |
Cool 11 - 27.04.2004 - 20:40 | А вдруг он может взять из базы данных бинарный файл? Т.е. оно просто запросом вынимает файл из БД и ехает тебе. Это наверное быстрее |
DIVЕR 12 - 28.04.2004 - 09:32 | Из БД - это верно. А если файл обычный?.. Хотя ладно, меня и такое решение в принципе устраивает =)) |