Laravel Nova Action下载文件的原因:失败-没有文件

时间:2019-05-01 06:51:05

标签: php laravel action laravel-nova

我想创建一个文件并在Laravel操作期间下载它。

我使用以下代码:

    public function handle(ActionFields $fields, Collection $models)
    {
        Storage::disk('local')->put('file.txt', 'example');
        $url = Storage::disk('local')->url('file.txt');
        return Action::download($url, 'file.txt');
    }

这会导致以下错误:

Failed - no file

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

不确定该错误消息来自何处,但是可能是以下问题。调用<div class="container" *ngFor="let group of groups"> <ng-container *ngTemplateOutlet="t1;context:{data:group}"></ng-container> </div> <ng-template #t1 let-data="data"> <div class="container" dragula="ITEMS" [(dragulaModel)]="data.items"> <!-- <font class="handle">x</font> --> <span> <font class="handle">x</font> <ng-container *ngFor="let item of data.items"> <ng-container *ngIf="item.items"> <ng-container *ngTemplateOutlet="t1;context:{data:item}"></ng-container> </ng-container> <ng-container *ngIf="!item.items"> <ng-container *ngTemplateOutlet="t2;context:{data:item}"></ng-container> </ng-container> </ng-container> </span> </div> </ng-template> <ng-template #t2 let-data="data"> <span> <font class="handle">x</font> {{data.name}} - {{data.position}} </span> </ng-template> laravel nova将指示浏览器以给定的URL下载文件。如here所述,该URL(取决于您的配置)可能是相对URL return Action::download($url, 'file.txt')。因此,浏览器将尝试下载可能不存在的/storage/file.txt。上面提到的文档为此提供了解决方案。

如果您甚至不想创建一个文件,如果数据敏感,则可能需要清理和保护文件,那么您也可以将url指向路由并在控制器中进行处理。