在视图中显示存储文件夹中的图像

时间:2018-12-01 15:31:27

标签: laravel laravel-5 laravel-blade laravel-5.7 laravel-storage

当我将图像上传到本地主机中的存储文件夹时,它可以正常工作。但是,当我将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";
}

3 个答案:

答案 0 :(得分:0)

请尝试使用ssh登录并运行

php artisan storage:link

或在您的根laravel文件夹中创建.htaccess并在下面添加此代码。

<IfModule mod_rewrite.c>
    RewriteEngine On

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

并确保您对storage文件夹具有适当的权限。

可能会有所帮助。

答案 1 :(得分:0)

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)
}

答案 2 :(得分:0)

您需要在公用文件夹中创建一个文件(例如,link.php),并在下面声明codes确保在应用中声明路径。

<?php
    symlink('../public_html/storage/app/public', '../public_html/public/storage');

然后,您可以访问your-domain.com/link.php,仅此而已。完成