Мое веб-приложение работает на Apache mod_perl
с использованием CGI :: Application. Я хочу обеспечить загрузку сгенерированного файла. В прошлом (до того, как мы использовали mod_perl
и CGI :: App), я просто вывел файл csv в STDOUT
, как он был сгенерирован. Сейчас я пытаюсь немного улучшить свою работу - создаю электронную таблицу Excel с помощью Spreadsheet :: WriteExcel - и я не могу распечатать ее из дескриптора файла.
sub export_list {
my $self = shift;
binmode(STDOUT);
my $str;
open my $fh, '>', \$str;
my $workbook = Spreadsheet::WriteExcel->new($fh);
my $worksheet = $workbook->add_worksheet();
$worksheet->write_col(0,0, ['some','data','here']);
warn $str;
return $str;
}
Вывод является просто пустым ответом, а предупреждение также пустым.
Метод, который я использую для записи электронной таблицы в файловый дескриптор, в значительной степени прямо из документации , поэтому я предполагаю, что проблема в некотором недоумении CGI :: App с моей стороны. Предложенные в документации методы для файловых дескрипторов и mod_perl
также оказались довольно бесплодными.
Полагаю, мне следует упомянуть, что я работаю в Windows, и что мой текущий обходной путь - создать файл и предоставить пользователю ссылку на него. Однако это создает больше проблем в отношении очистки каталога и времени его выполнения, а также проверки подлинности для доступа к сгенерированным файлам.
Предложения? Резкая критика?