Большое спасибо.

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

Ответить