如何返回下载文件并继续仅在控制器laravel中执行另一个代码

时间:2018-11-30 03:43:47

标签: laravel laravel-5

这是我的控制器的一些代码:

generate.test_framework :mini_test

但是当我运行此控制器时,它调用了public function export() { $this->getTemplate(); $post=Post::find(1)->get(); return redirect()->back()->with($post); } public function getTemplate() { return Storage::download('public\template\note.docx'); } 函数,但是它不撤消文件,并且导出函数中的其他代码仍然继续

1 个答案:

答案 0 :(得分:-1)

我将返回url,然后使用download.js在加载时下载文件或按任意按钮

这里是一个例子:

http://pagedemos.com/sxks39b72aqb/7

希望这会有所帮助

更新

如果您将代码更改为以下内容:

public function export() {

    $url = $this->getTemplate();
    $post=Post::find(1);
    return redirect()->back()->with([$post, $url]);

}

public function getTemplate() {

    return Storage::url('public\template\note.docx');

}

并在您的视图中添加以下内容:

<script src="https://cdnjs.cloudflare.com/ajax/libs/downloadjs/1.4.8/download.min.js"></script>

$(document).ready(function() {

    $.ajax({
        url: "{{ $url }}",
        success: download.bind(true, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "note.docx")
    })

});

这将允许您返回帖子页面并触发下载