Отображать изображения из папки хранения в представлении - PullRequest
0 голосов
/ 01 декабря 2018

Когда я загружаю изображения в папку хранилища на моем локальном хосте, все работает нормально.Однако, когда я перемещаю свой проект Laravel 5.7 на виртуальный хостинг, изображения не появляются, и я не знаю почему.

Спасибо за вашу помощь.

Blade

@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 ]

0 голосов
/ 01 декабря 2018

https://stackoverflow.com/a/50771337/3240068

Ваш общий хостинг-сервер может разрешать или запрещать использование символических ссылок.Если вы запускаете команду, и она все еще не работает, то у вас есть два варианта, в основном.

1) Загрузка / перемещение / копирование изображений из хранилища в общедоступные;

2) https://laravel.com/docs/5.7/responses#file-downloads

Создание маршрута и контроллера, который считывает и возвращает изображения из хранилища.Это не проверено, поэтому проведите некоторые корректуры и исследования, но оно должно выглядеть примерно так:

// 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)
}
0 голосов
/ 01 декабря 2018

Пожалуйста, войдите в систему, используя ssh, и запустите

php artisan storage:link

или создайте .htaccess в корневой папке laravel и добавьте этот код ниже.

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

и убедитесь, что вы правильноразрешение на вашу папку storage.

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

...