Download file
Материал из Eludia.
Описание
Инициирует процедуру копирования файла с сервера на клиент (download). Передаваемое содержимое должно храниться в файловой системе, в одной из поддиректорий docroot. Смысл использования этой процедуры вместо перенаправления клиента на статический файл:
- ваша директория с файлами может оставаться недоступной для чтения извне, что позволяет контролировать права доступа средствами приложения;
- вы можете переопределить имя файла ("Проект.mpp" вместо "3543543574537.tmp").
Опция path может задавать как путь относительно docroot (там файл ищется в первую очередь), так и абсолютный. Если файл не найден, происходит ошибка (die ('File not found'));
Опция delete позволяет стереть файл после его отправки клиенту. Такое использование типично для временных файлов, которые бессмысленно хранить долго (например, статистические отчёты по оперативным данным).
При использовании этой функции (как и download_file_header), необходимо иметь в виду следующее:
- MSIE (по крайней мере, 7.0.5730.11 под Windows XP) не в состоянии открыть успешно скачанный (downloaded) файл, если его имя длиннее 125 символов;
- MSIE 6 (по крайней мере, 6.0.3790.3959 под Windows Server 2003) некорректно отображает имена файлов с двойными кавычками. В MSIE 7 эта проблема, по-видимому, решена.
Если информация о файле (имя, путь) и, тем более, его содержимое, хранятся в таблице БД, то следует использовать процедуру sql_download_file.
Синопсис (Perl5)
download_file ({
path => '/i/upload/images/' . $real_filename,
file_name => "$item->{label}.mpp",
# delete => 1 # если требуется стереть файл сразу после отправки
});
