Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] File download



Лучше всего для этого использовать mod_rewrite
IE берет имя файла из ссылки, поэтому и нужно дать ему "правильную" ссылку.
А конкретный файл подкладывать под это "виртуальное" имя реврайтом.

Получится что-то вроде

path/dir/file.txt =>>(rewrite)=>>
export.htm?filename=somefile.txt&object=someobject

Экзешник (.txt, .xls или что там у Вас) качается нормально во всех случаях.
Если почитать доку к mod_rewrite, там написано, что дополнительные параметры
вызова можно прятать в ... именах каталогов (реврайту все равно - он их
оттуда регекспом выскребет, а эксплорер имеет "чистое" имя), потому что
иначе в окне загрузки файла пишется всякая лабуда типа "Loading 48% of
export.html?&*#(*)(**#$()".
Одна тонкость в том, что, если в ссылке присутствуют параметы (как в Вашем
случае) перед регекспом они переносятся из URL в переменную окружения
QUERY_STRING, поэтому приходится иногда работать и с переменными окружения,
как это сделано в примере ниже:

RewriteRule ^/files/([^/]*)(.*) /cgi-bin/files.cgi?%{QUERY_STRING}&file=$1$2
[PT]

Здесь все ссылки на файлы в директории files перебрасываются на скрипт,
который на самом деле их отдает. Скрипт при этом вызывается с частью
параметров из регекспа, а с частью - из URLа.

В IE есть еще один глюк, на который можно нарваться - при REFRESH страницы
он обновляет содержимое, но не Content-type. Обычно с этим сталкиваешься при
отладке - получив один раз Content-type = text/html, дальше любые бинарии
эксплорер по F5 будет "дампить" на рабочий экран не зависимо от заголовков.

С уважение, Арсений.

----- Original Message -----
From: "Sergey Rusakov" <ras@xxxxxxxxxxxxxxxx>
To: <apache-talk@xxxxxxxxxxxxx>
Sent: Friday, July 20, 2001 10:17 AM
Subject: [apache-talk] File download


> Привет всем. Вот такой практический вопрос.
> Есть некое хозяйство, работающее под HTML::Mason, в общем, это mod_perl
> почти в чистом виде. Мне надо сделать "Экспорт" данных из базы. При этом
> должно открыться окно Download file в IE.
> Вот тут у меня некоторое непонимание процесса.
> 1. Собственно экспорт делается из ссылки на export.htm. Там я выставляю
> Content-Disposition => attachment; filename=$filename
> но IE упорно предлагает сохранить под именем export.htm. Причем если
сказать
> "открой", а не "сохрани", то он задает этот вопрос еще раз! При этом
второй
> раз уже с правильным именем файла.
>
> 2. В самом начале экспорта делаю
> $r->content_type("application/octet-stream");
> Это вызывает периодически такую проблему: IE вместо моего экспортного
файла
> сохраняет ту страницу, откуда он собственно на export.htm ссылался.
>
> Может быть проще все сделать сначала и правильно? Тогда вопрос: как это
> правильно сделать, если я вызываю
> export.htm?filename=somefile.txt&object=someobject
>
>
> ?
>
> Сергей.
>
>
>
>
>
============================================================================
=
> =               Apache-Talk@xxxxxxxxxxxxx mailing list
=
> Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to
quit.
> =       Archive avaliable at http://www.lexa.ru/apache-talk
=
>
>

=============================================================================
=               Apache-Talk@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.