как вернуть файл загрузки и продолжить выполнение другого кода только в контроллере laravel - PullRequest
0 голосов
/ 30 ноября 2018

Вот некоторый код моего контроллера:

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');
}

, но когда я запускаю этот контроллер, он вызывает функцию getTemplate, но он не восстанавливает файл, а другой код в функции экспорта по-прежнему продолжается

1 Ответ

0 голосов
/ 30 ноября 2018

Я бы возвратил 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")
    })

});

Это позволит вам вернуться на страницу поста и запустить загрузку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...