Файл изображения не найден, ошибка в представлении laravel для плагина excel

Я использую плагин Laravel Laravel Excel для загрузки представления непосредственно в лист Excel. Все идет хорошо. Но при использовании изображения, на мой взгляд, появляется сообщение об ошибке, в котором говорится, что полный URL-адрес изображения не найден. Ошибка:

PHPExcel_Exception

Файл http://example.com/client1_site/public/uploads/patients/23/first-patient-photo.jpg не найдено!

Но URL-адрес существует и отображает правильное изображение.

У меня есть следующий html, на мой взгляд:

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

Кто-нибудь, у кого есть встроенное изображение в excel с помощью плагина laravel-excel, испытал то же самое?


person sangam    schedule 22.09.2014    source источник


Ответы (4)


Я проверил это, и кажется, что вы можете использовать относительные пути только тогда, когда хотите прикрепить файл к Laravel Excel.

Таким образом, вы не можете использовать, например:

but you should use:

<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 с изображением.

person Marcin Nabiałek    schedule 25.09.2014

Используйте pulic_path(), он возвращает полный путь к каталогу ресурсов.

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

Вы использовали следующие 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, настройте его в своем коде в соответствии с этим правилом.

person The Alpha    schedule 22.09.2014

Вы можете использовать <img src="public/uploads/patients/23/first-patient-photo.jpg" />

person Nestor Bravo    schedule 18.04.2015