如何使用 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)

如何实现在线浏览PDF文档

钉钉如何打开pdf文件

Laravel 5.2 无法打开 laravel.log

致命错误:未知:Laravel 5.2 Auth 中需要打开失败错误

如何将html文件转成pdf 在线转换