Большое спасибо.
20 марта 2014 г., 14:09 пользователь Alexander Lourier <[email protected]>написал: > Тогда - только архив. 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 > > -- Best regards, Artem V. Zhuravlev
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
