Как обработать данные, возвращенные из laravel Storage :: disk ('private') -> get ($ file) в формате PDF - PullRequest
2 голосов
/ 21 февраля 2020

Мой вопрос о проблеме в ссылке ниже:

Общие сведения о хранении файлов и защите содержимого Laravel 5

Мне нужно использовать тот же метод, упомянутый в Приведенный выше пример, но вместо изображения мне нужно предоставить ссылку для загрузки PDF-файла или ссылку для открытия PDF-файла в браузере, и я не могу этого сделать, поскольку, как упоминалось в комментариях к приведенному выше примеру, Storage::disk('private')->get($file) возвращает СОДЕРЖАНИЕ файл НЕ URL.

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

Ответы [ 2 ]

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

Вы должны выполнить следующие шаги:

У меня есть файл PDF для хранения в storage/app/pdf

В контроллере:

public function __construct()
{
    $this->middleware('auth');
}

public function index(Request $request, $file)
{   

    $file = storage_path('app/pdf/') . $file . '.pdf';

    if (file_exists($file)) {

        $headers = [
            'Content-Type' => 'application/pdf'
        ];

        return response()->file($file, $headers);
    } else {
        abort(404, 'File not found!');
    }        
}

, если laravel ниже 5.2: Добавьте use Response; выше класса контроллера в контроллере.

public function index(Request $request, $file)
{   

    $file = storage_path('app/pdf/') . $file . '.pdf';

    return Response::make(file_get_contents($file), 200, [ 'Content-Type' => 'application/pdf',
        'Content-Disposition' => 'inline; filename="'.$file.'"'

    ]);       
}

In web.php

Route::get('/preview-pdf/{file}', 'Yourcontroller@index');

В виде блейда:

<a href="{{ URL('/preview-pdf/'.$file )}}" target="_blank">PDf</a>
0 голосов
/ 21 февраля 2020

В соответствии с документацией Laravel вы можете просто использовать метод download на фасаде Storage.

С вашего контроллера вернуть результат команды.

return Storage::disk('private')->download($file);

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