错误。无法在Laravel中加载pdf文档

时间:2019-06-26 12:16:11

标签: php laravel

我想用html加载pdf文件,但出现错误。

这是我的功能

 public function getDocument($file){
      $filePath = 'app/final/attachments/AA-19-4-2019-18123/'.$file;
      $type = Storage::mimeType($filePath);
      $pdfContent = Storage::get($filePath);

      return Response::make($pdfContent, 200, [
         'Content-Type'        => $type,
         'Content-Disposition' => 'inline; filename="'.$file.'"'
      ]);
 }

这是我的路线

 Route::get('/documents/pdf-document/{file}', 'inboxController@getDocument');

这是我在刀片中的代码

 <embed src="{{ action('inboxController@getDocument', ['file'=> basename($attach)]) }}" style="width:100%;height:auto;overflow: hidden;" frameborder="0" allowfullscreen>

看来,该错误是由于文件名引起的。当我将其更改为asdf.pdf时,它加载了文件,但是当我更改其文件名时,不再加载了。图像没有真正的问题。仅pdf文件。请帮助我

编辑

当我尝试使用此静态代码,然后从路由以及刀片中删除{file}时,将加载pdf。我不知道为什么。

 public function getDocument(){
      $filePath = 'app/final/attachments/AA-19-4-2019-18123/my.pdf';
      $type = Storage::mimeType($filePath);
      $pdfContent = Storage::get($filePath);

      return Response::make($pdfContent, 200, [
         'Content-Type'        => $type,
         'Content-Disposition' => 'inline; filename="'.$file.'"'
      ]);
 }

1 个答案:

答案 0 :(得分:0)

您可以这样:

php artisan storage:link

下一步转到“公用”下的存储文件夹,并创建一个文件夹“ FOLDER_NAME”

您的功能:

 public function getDocument($filename){

    return response()->file('storage/FOLDER_NAME/'.$filename);
}

在您的路线中,web.php:

Route::get('/pdf/{filename}', ['as' => 'filename', 'uses' => 'ControllerName@getDocument' ]);

然后您可以从刀片中调用它:

<a href="/pdf/{{ 'name_of_your_file' }}" target="_blank">See PDF File:</a>