Стояла задача дать пользователю возможность скачать файл. Покопавшись в документации, я нашел 2 варианта - хелперы "render_data" и "render_static".
Оба варианта мне не подошли.
"render_data" - принимает строку, а я не хотел вычитывать весь файл в память.
"render_static" - отдает файлы с "public" директории.
Реализация достаточно проста: Добавил тесты и залил на CPAN в виде плагина Mojolicious::Plugin::RenderFile
"render_data" - принимает строку, а я не хотел вычитывать весь файл в память.
"render_static" - отдает файлы с "public" директории.
render_file
Интернет предложил различные варианты решения проблемы, но какого-то удобного я не нашел, решил написать свой хелпер. Хелпер должен был уметь отдавать файл по абсолютному пути с любой папки без вычитывания файла в память, и чтобы браузер предлагал пользователю файл сохранить, а не пытался рендерить. Так появился "render_file".
Используется он так:
# Provide any file name $self->render_file( filepath => '/tmp/files/file.pdf', filename => 'report.pdf' );
Реализация достаточно проста: Добавил тесты и залил на CPAN в виде плагина Mojolicious::Plugin::RenderFile
8 коммент.:
Может подскажешь, как организовать динамический вывод данных в csv подобно json в Mojolicious
Не понял вопроса. Вывод в csv файл? В чем основная задача?
Основная задача:
есть данные, нужно сфомировать csv и вывести csv с нужным content type для загрузки из браузера.
В данном случае можно сгенерировать файл и отдать его твоим плагином. Но если отдавать не файл, а сгенерированые данные?
Как проще всего это сделать используя Mojolicious?
Можно использовать "data" вместо "filеpath" - $self->render_file('data'=>$csv_data, 'filename'=>'some_file.csv');
Спасибо! Идеально.
Спасибо!
Как раз то что искал :)
Пользовал его =) Приятно удивлен, что это ты! Спасибо!
Как раз то что нужно было, большое спасибо!
Отправить комментарий
Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)