首页 > 解决方案 > Laravel nova - 使用动作允许多次下载

问题描述

在 laravel 新星 2.0

要在操作执行后启动文件下载,您可以使用 Action::download 方法。download 方法接受要下载的文件的 URL 作为其第一个参数,并将所需的文件名称作为其第二个参数:

return Action::download('https://example.com/invoice.pdf', 'Invoice.pdf');

在 Action 处理方法

 public function handle(ActionFields $fields, Collection $models)
    {
        foreach ( $models as $model ) {
            return Action::download($model->document_link, $model->document_title);
        }
    }

现在这将下载循环中的最后一个,如何允许循环下载所有内容?

更新

一种选择是使用 Zipper 或其他东西来创建所有选定的可下载文件的 zip,然后下载它,但如果我们可以允许下载队列,我会喜欢它。

标签: laravellaravel-nova

解决方案


我不相信可以使用下载多个文件

return Action::download()

一种解决方法是创建一个包含所有文件的压缩存档并显示此存档示例:

public function handle(ActionFields $fields, Collection $models)
{
    foreach ( $models as $model ) {
       $this->addTozip($model) // some function to build an archive
    }
    return Action::download('https://example.com/invoice.zip', 'Invoice.zip');
}

推荐阅读