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

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

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

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

#1楼 票数:2

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

我已将 pdf 文件storage/app/pdfstorage/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>

#2楼 票数:-1 已采纳

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

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

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

  ask by kianoosh Azarvandi translate from so

未解决问题?本站智能推荐:

2回复

使用RESTful控制器在Laravel7中使用PHP在浏览器中显示.pdf文件

我正在处理一个 Laravel 项目,在项目内部我将.pdf文件存储到我的本地 phpmyadmin 并将其取回以显示在浏览器中。 我看到一些应用程序,但他们在将.pdf文件上传到数据库时将其保存在本地。 然后它变得很容易用<img src="">显示,但我不想使用它。 这些是我的路线;
2回复

如何在AmazonS3->CloudFront中使用Laravel::Storage在Laravel::Storage中使用带有自定义cname的“temporaryUrl”

我在S3中有一个文件,在CloudFront使用cname(带有Amazon SSL证书)时,文件是公共的,我可以使用URL毫无问题地访问它。 公用文件中的有效示例: 在拉拉韦尔 我发现的最佳选择是: 对于s3中的敏感文件,我是否应该将CloudFront用作TemporaryUrl
4回复

Laravel5.3Storage::put创建一个包含文件名的目录

我正在使用 Laravel 的文件存储功能来保存文件: 这确实保存了文件,但保存在与文件相同的目录中,例如: storage/app/952d6c009.jpg/952d6c009.jpg 或storage/app/234234234.jpg/234234234.jpg 这是预期的吗? 有没有办法只
4回复

Laravel存储返回FileNotFoundException但文件存在

我想在 Laravel 6 中读取文件内容,该文件已经存在但 Laravel 返回未找到异常。 这是我的日志文件目录: /var/www/html/myLaravelLab/storage/logs/laravel-2019-10-14.log$contents = Storage::get(sto
1回复

带有Laravel的Quasarq-uploader在q-file工作时无法识别文件

我能够让 q-file 上传单个图像,并且我的 Laravel API 可以完美地处理它。 当然,我需要一次上传多个文件,所以我尝试切换到 q-uploader,当我记录响应时,文件显示为 [object File]。 我还尝试在 FileController 中使用 $request->fi
4回复

如何在Laravel中验证文件上传

这个问题已经在这里有了答案: 如何在Laravel中验证最大文件大小? 2个答案 我已经完成了一个上传图像文件的教程 。 当用户上传大于2MB的文件时,如何在视图中验证文件上传? create.blade.php @if (count($errors) > 0)
1回复

未找到存储中的Laravel文件

文件系统设置 上传文件 用文件修补到文件夹: 示例网址: 尝试获取图像: 生成的网址:http://sakura/storage/profile/aDtjR6z7Ih4fkmo7bdAqqyDXmhu2qE4pg3s5BBla.jpg 但是我为这张图片得到了 404。 在服务器设置根目录中 如何获得
1回复

Laravel符号链接不起作用

我在使用 laravel 创建符号链接以访问我存储中的文件时遇到了一些问题我将我的文件storage\\app\\public在storage\\app\\public 我用php artisan命令创建了链接php artisan storage: link The [public/storage