Тогда - только архив. HTTP не поддерживает multipart-ответы. Можно ещё показать HTML-страничку, с которой можно каждый файл по отдельности кликом открыть.
И ещё. Вы небезопасно используете временный файл для генерации XLS. Если два пользователя попытаются выполнить такую операцию, то одному может достаться файл от другого или его битый кусок. Если в вашем случае возможно генерировать файл в памяти, то лучше сделать именно так: my $xls_data; my $handle = IO::Scalar->new(\$xls_data); my $workbook = Spreadsheet::WriteExcel->new($handle); .... $workbook->close; $self->render(data => $xls_data); 20 марта 2014 г., 9:24 пользователь Artem Zhuravlev <[email protected]>написал: > Файлы через веб, загрузка клиентом. > > > 20 марта 2014 г., 12:10 пользователь Alexander Lourier > <[email protected]>написал: > > Зависит от того, что такое $self->res, и как вы хотите отдавать файлы. >> Если вы формируете email, то Content-type самому письму задаёте >> multipart/mixed, потом к письму цепляете каждый аттач отдельным part. Если >> это MIME::Entity, то примерно так: >> $self->res->attach(Data => $document, Type => 'application/vnd.ms-excel', >> Encoding => 'base64'); >> $self->res->attach(....); >> >> >> >> 2014-03-20 8:54 GMT+01:00 Artem Zhuravlev <[email protected]>: >> >>> >>> >>> Добрый день. >>> >>> Столкнулся с проблемой рендеринга xls файлов. >>> >>> my $self = shift; >>> my $dir = "/tmp/writeexcel/"; >>> my $template = "application"; >>> my $suffix = ".xls"; >>> >>> my $filename = $dir . $template . $suffix; >>> # Create a new workbook called simple.xls and add a worksheet >>> my $workbook; >>> $workbook = Spreadsheet::WriteExcel->new($filename) or die "Problems >>> creating new Excel file: $!" unless defined $workbook; >>> my $worksheet = $workbook->add_worksheet("Заявка"); >>> ... формируем xls файл ... >>> $workbook->close() or die "Error closing file: $!"; >>> >>> my $document = do { >>> local $/ = undef; >>> open my $fh, "<", $filename >>> or die "could not open $filename: $!"; >>> <$fh>; >>> }; >>> >>> $self->res->headers->content_disposition("attachment; >>> filename='file.xls';"); >>> $self->render(data => $document); >>> >>> Тут все хорошо. >>> >>> Не знаю как быть в случае если нужно отдать сразу несколько файлов. >>> >>> Пните куда смотреть. Думал над тем что архивировать файлы и передать >>> архив. >>> >>> Спасибо. >>> >>> P.S. Суть не в самом решении, конечно не буду против, а в том куда >>> копать. >>> >>> -- >>> Best regards, >>> Artem V. Zhuravlev >>> >>> -- >>> Moscow.pm mailing list >>> [email protected] | http://moscow.pm.org >>> >>> >> >> -- >> Moscow.pm mailing list >> [email protected] | http://moscow.pm.org >> >> > > > -- > Best regards, > Artem V. Zhuravlev > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > >
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
