如何使用 laravel 5.2 在线打开 PDF?
Posted
技术标签:
【中文标题】如何使用 laravel 5.2 在线打开 PDF?【英文标题】:How to open PDF online using laravel 5.2? 【发布时间】:2016-08-18 09:43:21 【问题描述】:如果我单击带有 url 的链接:website.com/open/pdf/Document_One_Drag_3.pdf,它将在浏览器中打开 pdf 而不是下载。 这是我在 Route.php 中的代码
Route::get('/open/pdf/filename', function($filename)
// Check if file exists in app/storage/file folder
$file_path = public_path('uploads/docs/'.$filename);
if (file_exists($file_path))
return Response::make(file_get_contents($file_path), 200, [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; '.$filename,
]);
else
// Error
exit('Requested file does not exist on our server!');
);
PDF 文件仍在下载且未在浏览器中打开。怎么了?
【问题讨论】:
试试这个***.com/questions/25938294/… 【参考方案1】:考虑到 Laravel 5.2,下载方法可用于生成响应,强制用户的浏览器下载给定路径的文件。
$pathToFile = public_path(). "/download/fileName.pdf";
return response()->download($pathToFile);
download 方法接受文件名作为该方法的第二个参数,这将确定下载文件的用户看到的文件名。最后,您可以将一组 HTTP 标头作为方法的第三个参数传递:
return response()->download($pathToFile, $name, $headers);
所以,你可以使用
$headers = ['Content-Type' => 'application/pdf'];
作为第三个参数。
这些信息也可能有用:
注意:管理文件下载的 Symfony HttpFoundation 要求正在下载的文件具有 ASCII 文件名。
L5.2 Documentation
在浏览器中打开
<a href="url('/your/path/to/pdf/')" target="_blank" >My PDf </a>
【讨论】:
所以如果我想打开文件我应该使用'return response()->file($pathToFile, $headers);'正确的 ?结果是pdf文件仍在下载。我不知道出了什么问题。 您不是要下载文件吗?或者,只想查看在浏览器选项卡中打开的 pdf 文件?您编写的所有代码都可供下载。 我想在浏览器中查看pdf而不是下载它。 那也不行。。我尝试的所有代码都不能在我的服务器上运行,而是在我的本地主机上运行。是服务器还是什么?? 你能告诉我们生成的链接吗?另外,请检查该路径中是否有文件和/或设置了足够的权限以上是关于如何使用 laravel 5.2 在线打开 PDF?的主要内容,如果未能解决你的问题,请参考以下文章
Summernote 编辑器未打开(laravel 5.2)