Скачать файл в laravel - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок в Laravel, и я пытаюсь записать имя файла, хранящееся в таблице базы данных, под названием "Инфраструктура", чтобы я мог создать ссылку для загрузки этого файла пользователями. Загрузка работает, но я всегда получаю неправильный файл, хранящийся в каталоге.

Итак, в моем контроллере с именемstructureController. php У меня есть эти коды.

public function show($id)
    {
        $infrastructure = $this->infrastructureRepository->find($id);
        $Attachment = $infrastructure->inf_file; // captured filename in the database

        if (empty($infrastructure)) {
            Flash::error('Infrastructure not found');

            return redirect(route('infrastructures.index'));
        }

        return view('infrastructures.show')->with('infrastructure', $infrastructure);
    }

В моем маршруте или в Интернете . php

У меня есть эти коды ...

Route::get('/download', function(){
    $name = $Attachment;

    $file = storage_path()."/app/public/infrastructure/".$Attachment;

    $headers  = array(
        'Content-Type: application/pdf',
    );

    return Response::download($file, $name, $headers);
});

и, наконец, в моем файле просмотра у меня есть это

<!-- Inf File Field   -->
<div class="form-group">
    {!! Form::label('inf_file', 'Attachements:') !!}
    <a href="/download">Download Now</a>
</div>

Может кто-нибудь указать Я здесь не так ...

1 Ответ

0 голосов
/ 05 апреля 2020

Сначала вы не передаете имя вложения из вашего View обратно на контроллер, поэтому измените ваше представление на:

<!-- Inf File Field   -->
<div class="form-group">
    {!! Form::label('inf_file', 'Attachements:') !!}
    <a href="/download/{{ $infrastructure->inf_file }}">Download Now</a>
</div>

Затем в вашем маршруте вам нужно получить доступ к имени файла, например, так :

Route::get('/download/{Attachment}', function($Attachment){
    $name = $Attachment;

    $file = Storage::disk('public')->get("infrastructure/".$Attachment);

    $headers  = array(
        'Content-Type: application/pdf',
    );

    return Response::download($file, $name, $headers);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...