Отображать изображения из папки хранения в представлении
Когда я загружаю изображения в папку на моем локальном хосте, все работает нормально. Однако, когда я перемещаю свой проект Laravel 5.7 на виртуальный хостинг, изображения не появляются, и я не знаю почему.
Спасибо за помощь.
лопасть
@foreach ($data as $user)
@foreach(json_decode($user->name, true) as $images)
@endforeach
@endforeach
<!-- Wrapper for slides -->
<div class="carousel-inner">
@foreach ($data as $user)
@foreach(json_decode($user->name, true) as $images)
<div class="item">
<img src="{{ asset('/slider/images') }}/{{$images}}" alt="Los Angeles" style="width:100%;">
</div>
@endforeach
@endforeach
</div>
контроллер
<?php
if ($request->hasfile('image')) {
foreach ($request->file('image') as $image) {
$name = $image->getClientOriginalName();
$image->move(storage_path() . '/slider/images/', $name);
$data[] = $name;
}
$query = DB::table('slider')->insert([
['title' => 'lorem', 'alt' => 'lorem', 'name' => json_encode($data)],
]);
return "good";
} else {
return "null";
}
2 ответа
/questions/6778952/ssyilka-na-hranilische-laravel-ne-budet-rabotat-na-proizvodstve/6778958#6778958
Ваш хостинг-сервер может разрешать или запрещать использование символических ссылок. Если вы запускаете команду, и она все еще не работает, то у вас есть два основных варианта.
1) Загрузка / перемещение / копирование изображений из хранилища в общедоступные;
2) https://laravel.com/docs/5.7/responses
Создайте маршрут и контроллер, который считывает и возвращает изображения из хранилища. Это не проверено, поэтому проведите некоторые корректуры и исследования, но оно должно выглядеть примерно так:
// Route
Route::get('storage-asset/{$path}', 'App\Http\SomeController@getStorageAsset');
// Controller
public function getStorageAsset($path)
{
if (File::exists(storage_path($path)) {
return response()->file(storage_path($path));
}
// If file not found.
return abort(404)
}
Вам необходимо создать файл (например, link.php) внутри общей папки и объявить codes
ниже.убедитесь, что ваш путь указан как в вашем приложении.
<?php
symlink('../public_html/storage/app/public', '../public_html/public/storage');
тогда вы можете посетить your-domain.com/link.php
, вот и все. сделанный
Пожалуйста, попробуйте войти с помощью ssh и запустите
php artisan storage:link
или создать .htaccess
в вашу корневую папку laravel и добавьте этот код ниже.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
и убедитесь, что у вас есть соответствующее разрешение на storage
папка.
это, вероятно, может помочь.