2016-04-05 2 views
2

Привет Я пытаюсь исправить ошибку загрузки Laravel, с которой я имею дело. У меня есть правильная настройка маршрута и правильная функция в контроллере. Я также могу подтвердить, что у меня есть доступ к файлу, потому что я создал файл с использованием одного и того же маршрута и вернул его. Сделав это, я смог успешно вернуть содержимое файла. Однако, когда я пытаюсь использовать кнопку с точки зрения и вызвать функцию контроллера я получаю эту ошибку:Laravel - Загрузка файлов

FileNotFoundException in File.php line 37: 
The file "The file "2016-04-04_07-21-50 - Pinging host: 192.168.2.1 
2016-04-04_07-21-50 - Host 192.168.2.1 is up! 
2016-04-04_07-21-50 - Pinging host: 192.168.2.2 
2016-04-04_07-21-53 - Pinging host: 192.168.2.3 ... 

Теперь вот код, который привел к ошибке:

show.blade.php

<a class="btn btn-default col-md-12" href="/getDownload/{{ $now }}" role="button">Download Today's Log</a> 

HonoursController.php

public function getDownload($id) 
    { 
     $file = File::get("../resources/logs/$id"); 
     $headers = array(
      'Content-Type: application/octet-stream', 
    ); 
     #return Response::download($file, $id. '.' .$type, $headers); 
     return response()->download($file, $id.'txt', $headers); 
    } 

Что я мог догадаться, так это то, что я получаю 500 HTTP-ошибок. Однако моя инспекция не предоставляет мне никакой другой информации. Любая идея, что происходит?

+0

ли файл существует? Что такое var_dump (File :: get ('../ resources/logs /'. $ Id))? –

+1

, когда вы проверяете тег ' KDaker

+0

@jakub_jo string (59048) "2016-04-04_07-21-50 - Pinging host: 192.168.2.1 2016-04-04_07-21-50 - Host 192.168.2.1 up! 2016-04-04_07-21-50 - Pinging host: 192.168.2.2 ... плюс все содержимое файла – NSaid

ответ

2

Попробуйте это:

public function getDownload($id) 
{ 
    // $file = File::get("../resources/logs/$id"); 
    $headers = array(
     'Content-Type: application/octet-stream', 
    ); 
    #return Response::download($file, $id. '.' .$type, $headers); 
    return response()->download("../resources/logs/$id", $id.'txt', $headers); 
} 

Из документов:

The download method may be used to generate a response that forces the user's browser to download the file at the given path.

return response()->download($pathToFile, $name, $headers);

https://laravel.com/docs/5.1/responses#basic-responses

1

Первым аргументом метода загрузки должен быть путь к файлу, а не сам файл.

The download method may be used to generate a response that forces the user's browser to download the file at the given path. ...

Source: https://laravel.com/docs/5.2/responses#file-downloads

Смежные вопросы