【问题标题】:How to view pdf without downloading in laravel?如何在laravel中查看pdf而不下载?
【发布时间】:2021-08-11 10:02:15
【问题描述】:

想在浏览器中查看pdf,但它开始被IDM自动下载。

这是我的控制器代码,

   $filename = Pdf::find($id);
   $path     = asset($filename->pdf);

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

这是我的刀片代码,

      <a href="{{route('preview.pdf',[$pdf->id])}}">view</a>

当我点击查看按钮时,它开始由 IDM 自动下载。我想阻止它。没有人可以下载pdf,用户只能查看pdf。

有人知道怎么做吗?

【问题讨论】:

  • Content-Disposition = inline; 应该让它显示在您的浏览器中,但是 inline 通常在没有 filename 指令的情况下使用。
  • 值得指出的是,即使您只是将其设置为显示 pdf,用户仍然可以根据需要选择保存它。它仍在物理上下载到他们的机器上。
  • 不知道什么是IDM?!
  • IDM => 互联网下载管理器
  • 您是否尝试过禁用/停止 IDM?

标签: php mysql laravel pdf


【解决方案1】:

Laravel 响应有一个特殊的file()

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

【讨论】:

  • 我应用了这段代码,结果是一样的。 Pdf 由 IDM 自动开始下载。
【解决方案2】:

file 方法可用于直接在用户的浏览器中显示文件,例如图像或 PDF,而不是启动下载

https://laravel.com/docs/6.x/responses#file-responses

根据文档,我们应该使用这种方式。

为防止 IDM 强制下载,在 IDM 配置中,您可以执行以下两种方式:

  1. 删除PDF类型
  2. 指定 IDM 不会自动下载的地址

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 2018-10-31
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    相关资源
    最近更新 更多