2

我的问题是关于以下链接中的问题:

了解文件存储和保护内容 Laravel 5

我需要使用上面示例中提到的相同方法,但我需要提供 PDF 文件的下载链接或在浏览器中打开 PDF 文件的链接而不是图像,但我不能这样做,因为如上面示例的注释中所述返回文件的Storage::disk('private')->get($file)内容而不是 URL。

请告诉我如何将行数据(文件内容)转换为文件并为视图内的用户提供链接。

4

2 回答 2

2

您应该按照以下步骤操作:

我已将 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.'"'

    ]);       
}

web.php

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

在刀片视图中:

<a href="{{ URL('/preview-pdf/'.$file )}}" target="_blank">PDf</a>
于 2020-02-21T09:33:43.420 回答
0

根据 Laravel文档,您可以简单地使用外观download上的方法。Storage

从您的控制器返回命令的结果。

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

于 2020-02-21T09:32:58.837 回答