К списку форумов К списку вопросов
[PHP]::"Выплевывание" файла скриптом и имя этого файла
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
Из БД - это верно. А если файл обычный?.. Хотя ладно, меня и такое решение в принципе устраивает =))

К списку вопросов на форуме Веб-дизайн

>>