Laravel - 在不强制下载的情况下在存储中显示PDF文件?

2022-08-30 09:55:20

我有一个PDF文件存储在应用程序/存储/中,我希望经过身份验证的用户能够查看此文件。我知道我可以使用以下方法让他们下载它

return Response::download($path, $filename, $headers);

但是我想知道是否有一种方法可以让他们直接在浏览器中查看文件,例如,当他们使用带有内置PDF查看器的Google Chrome时。任何帮助将不胜感激!


答案 1

2017 年更新

其他响应类型下记录的 Laravel 5.2 开始,您现在可以使用文件帮助程序在用户的浏览器中显示文件。

return response()->file($pathToFile);

return response()->file($pathToFile, $headers);

来源/感谢以下答案

2014年过时的答案

您只需要将文件的内容发送到浏览器并告诉它内容类型,而不是告诉浏览器下载它。

$filename = 'test.pdf';
$path = storage_path($filename);

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

如果使用它,则会自动将内容处置设置为附件,从而导致浏览器下载它。有关内联内容处置和附件之间的差异,请参阅此问题Response::download

编辑:根据评论中的请求,我应该指出,您需要在文件开头使用响应才能使用立面。

use Response;

或者是完全限定的命名空间(如果 Response 未别名为 Illuminate 的 Response 外观)。


答案 2

从Laravel 5.2开始,你可以使用文件响应
基本上你可以这样称呼它:

return response()->file($pathToFile);

它将在浏览器中以PDF和内联方式显示文件。


推荐