Laravel - 在不强制下载的情况下在存储中显示PDF文件?
我有一个PDF文件存储在应用程序/存储/中,我希望经过身份验证的用户能够查看此文件。我知道我可以使用以下方法让他们下载它
return Response::download($path, $filename, $headers);
但是我想知道是否有一种方法可以让他们直接在浏览器中查看文件,例如,当他们使用带有内置PDF查看器的Google Chrome时。任何帮助将不胜感激!
我有一个PDF文件存储在应用程序/存储/中,我希望经过身份验证的用户能够查看此文件。我知道我可以使用以下方法让他们下载它
return Response::download($path, $filename, $headers);
但是我想知道是否有一种方法可以让他们直接在浏览器中查看文件,例如,当他们使用带有内置PDF查看器的Google Chrome时。任何帮助将不胜感激!
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 外观)。