Отображать изображения из папки хранения в представлении

Когда я загружаю изображения в папку на моем локальном хосте, все работает нормально. Однако, когда я перемещаю свой проект 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 папка.

это, вероятно, может помочь.

Другие вопросы по тегам