在laravel视图中找不到图像文件错误到excel插件

时间:2014-09-22 07:12:14

标签: php laravel phpexcel laravel-excel

我正在使用Laravel插件Laravel Excel将视图直接加载到Excel工作表中。一切都很顺利。但是在我的视图中使用图像时,错误提示说未找到图像的完整URL。错误是:

  

PHPExcel_Exception

     

档案http://example.com/client1_site/public/uploads/patients/23/first-patient-photo.jpg   没找到!

但是网址存在且显示正确的图像。

我在视图中有以下html:

<td>
    @if(!is_null($s->photo))
        <img src="{{URL::to($s->photo)}}" style="width:90px;height:85px;" alt=""/>
    @endif
</td>

任何使用laravel-excel插件在excel中嵌入图像的人都经历过相同的操作?

4 个答案:

答案 0 :(得分:2)

我已对其进行了测试,当您要将文件附加到Laravel Excel时,您似乎只能使用相对路径。

所以你不能使用例如:

但你应该使用:

<img src="img/ph4.png" style="width:90px;height:85px;" alt=""/>

我已准备好测试代码,以便在必要时使其适用于Laravel Excel和正常路线:

routes.php档案

Route::get('/', function() {

    Excel::create('New file', function($excel) {

        $excel->sheet('New sheet', function($sheet) {

            $sheet->loadView('hello')->with('no_asset', true);

        });

    })->download('xls');
});


Route::get('/test', function() {

    return View::make('hello');
});

hello.blade.php档案:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
<table>
<tr>
<td>
info here
</td>


<td>

@if (isset($no_asset))
    <img src="img/ph4.png" style="width:90px;height:85px;" alt=""/>
@else
    <img src="{{ asset('img/ph4.png') }}" style="width:90px;height:85px;" alt=""/>
@endif
</td>
</tr>
</table>

</body>
</html>

传递额外变量no_asset以查看您可以决定内部视图,如果您只显示asset的相对路径或整个路径。

它为我工作 - 使用/test路由获得预期结果,而/我收到带图像的excel文件。

答案 1 :(得分:0)

您使用了以下URL

File http://example.com/client1_site/public/uploads/patients/23/first-patient-photo.jpg

但如果这个位于您的public文件夹中,则URL应为:

File http://example.com/uploads/patients/23/first-patient-photo.jpg

改为使用asset辅助方法:

<img src="{{ asset('uploads/patients/23/first-patient-photo.jpg')}}" style="width:90px;height:85px;" alt=""/>

使用public之后的路径,根据此规则在代码中进行调整。

答案 2 :(得分:0)

您可以使用<img src="public/uploads/patients/23/first-patient-photo.jpg" />

答案 3 :(得分:0)

使用pulic_path()它返回资源目录的完全限定路径。

<td>
    @if(!is_null($s->photo))
        <img src="{{ public_path().$s->photo }}" style="width:90px;height:85px;" alt=""/>
    @endif
</td>