【问题标题】:Display Images From Storage Folder in View在视图中显示存储文件夹中的图像
【发布时间】:2020-04-17 18:19:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    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】:

      请尝试使用 ssh 登录并运行

      php artisan storage:link
      

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

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

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

      这可能会有所帮助。

      【讨论】:

      • 我在本地主机中运行此命令一切正常,但在我的共享主机中不显示图像
      • 您可以查看服务器的 access.log/error.log 吗?它对尝试从您的项目中加载图像有什么看法?
      • “不显示图像”也很模糊。请更具体。是白页吗?一个nginx错误?网络错误代码,即 404?
      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-09-03
        • 2020-12-19
        • 1970-01-01
        • 2019-03-15
        • 2021-12-26
        • 1970-01-01
        • 2021-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多