使用Laravel

时间:2018-05-21 16:10:17

标签: php laravel laravel-5 mpdf

我对视图和生成的内容存在问题,无法生成PDF。目前,我一直在与niklasravnsborg \ LaravelPdf(mPDF的包装器,因为我之前正在使用的另一个PDF编写器的问题)一起工作,结果证明了我想要的质量好的PDF。

我之前在这个PDF编写器中我从来没有遇到过视图内部图像的问题,但是我必须承认它们已经是已经在视图中设置的图像(比如徽标,而不是说员工照片)。

我的问题出现的方式至少让我能够更好地追踪问题。

从我的控制器中,我得到以下信息:

$employeeMedCert = $employee->attachments()->where('category','Medical Examiners Certificate')->orderBy('endDate','desc')->limit(1)->get();

然后在我的刀片中,我有以下内容:

@foreach($employeeMedCert as $med){
    {{Storage::url($med->attachment)}}
 @endforeach

现在,通过当前的设置,我获得了附件的公共路径,完全没有任何问题。

然而,如果我执行以下操作:

@foreach($employeeMedCert as $med){
    <img src="{{Storage::url($med->attachment)}}">
@endforeach

它使我的Laravel停顿在我必须重置服务器并且没有生成任何内容的地步。

我不确定问题是什么,就像我说的那样,我以前没有问题,我动态引用的图像无论如何都不大(300 - 600) ()),所以我不确定问题究竟在哪里。

上传控制器操作:

        $path = Storage::putFile('public/employees', new File(request('file')));

        employeeAttachment::create([
                        'attachment' => $path,
                        'attachmentType' => Storage::mimeType($path),
                        'category' => $request->type,
                        'endDate' => $request->dueDate,
                        'date' => $request->date,
                        'employeeID' => $employee,
                        'createdBy' =>  Auth::id()
                    ]);      

1 个答案:

答案 0 :(得分:0)

这个问题的一个重要线索是,在html <img>标签中,当它们在html中运行时会执行get请求。这意味着您可能遇到权限错误。

您可以通过在chrome中打开devtools并在任何带有图片代码的网站上查看服务器请求来检查此内容。

要检查的事项(假设您使用的是基本存储,例如不使用AWS):

  1. 您的公共文件夹中是否有图片,或者您是否正确创建了sym链接:https://laravel.com/docs/5.6/filesystem
  2. 如果您的文件是公开的,可以在浏览器中导航到它吗?
  3. 您是否尝试过使用网址而不是通过存储?例如<img src="{{base_url() . $med->attachment)}}">(假设$med->attachment是文件路径)。
  4. 假设它是一个公共文件,您不必通过Storage外观来访问它。如果这指向正确的方向,请告诉我。

    Storage外观的目的是保存文件并获取文件并将其加载到php变量中。目前,您正在从服务器加载文件,然后将图像标记指向文件,而不是指向存储图像的URL。

    img标记中加入有效的网址可以解决您的问题(如上面的3所示)。