Перенаправление после скачивания файла laravel 5.7 - PullRequest
0 голосов
/ 12 февраля 2020

Привет

Надеюсь, у вас все будет хорошо. Я хочу перенаправить на маршрут после загрузки файла, но, как мы знаем, возврат работает только один раз в методе контроллера, как я могу достигните этого с laravel 5.7.Мне нужно установить сеанс и отобразить его, когда данные экспортируются в текстовый файл. Я хочу это с помощью метода post. Все хорошо, но перенаправление не работает;

Метод контроллера

public function exportTxtProcess(Request $request)
{
    $table = $request->tblExportSelect;

    $destinationPath = public_path('/');

    $result;

    $outputs = DB::select("SELECT * FROM $table");

    $today = date("Y-m-d");
    $fileName = $table . "-" . $today;
    $fp = fopen($destinationPath . "$fileName.txt", "wb");

    foreach ($outputs as $output) {
        $output = (array)$output;

        @array_shift($output);

        $removeUserId = @$output['user_id'];
        $created_at = @$output['created_at'];
        $updated_at = @$output['updated_at'];

        if (($key = array_search($removeUserId, $output)) !== false) {
            unset($output[$key]);
        }
        if (($key1 = array_search($created_at, $output))) {

            unset($output[$key1]);
        }

        if (($key2 = array_search($updated_at, $output))) {

            unset($output[$key2]);
        }

        if (is_null($created_at) OR $created_at == '') {
            unset($output['created_at']);
        }

        if (is_null($updated_at) OR $updated_at == '') {
            unset($output['updated_at']);
        }


        $netResult = $this->getTableFields($table, $output);

        fwrite($fp, $netResult);

    }

    $result = fclose($fp);


    if ($result) {
        $pathToFile = $destinationPath . "$fileName.txt";

        $redirect = redirect()->back();
        $sess = Session::flash('success', 'Table exported successfully');
        return response()->download($pathToFile)->deleteFileAfterSend(true);


    }

}

Заранее спасибо

1 Ответ

0 голосов
/ 12 февраля 2020

У вас может быть только 1 ответ, поэтому невозможно задать двойной возврат. Что вы могли бы сделать, это установить имя файла, который вы хотите загрузить в переменную сеанса, а затем перенаправить обратно на любую страницу. На перенаправленной странице вы можете просмотреть sh ваше сообщение вместе с автоматической c загрузкой файла.

Вот некоторые темы в топи c:

Как перенаправить после загрузки в Laravel?

PHP создать файл для загрузки, а затем перенаправить

...