【问题标题】:Laravel 5.4 Storage linkLaravel 5.4 存储链接
【发布时间】:2018-10-15 13:15:00
【问题描述】:

我想在 html 文件中显示图片我转到链接文件夹 公共/存储/图像是空的,但在存储/图像中我找到了文件和 它也保存在数据库中。*

@foreach($cvs as $cv)
                    <div class="col-sm-6 col-md-4">
                    <div class="thumbnail">
                        <img src="{{ asset('storage/'.$cv->photo) }}" alt="...">
                        <div class="caption">
                        <h3>{{ $cv->titre }}</h3>
                        <p>{{$cv->presentation}}</p>
                        <p>
                            <a href="#" class="btn btn-primary" role="button">Afficher</a>
                            <a href="#" class="btn btn-success" role="button">Modifier</a>
                            <a href="#" class="btn btn-danger" role="button">Supprimer</a>
                         </p>
                        </div>
                    </div>
                    </div>
                    @endforeach
                    </div>
               </div>

【问题讨论】:

  • 这是public/storage/image的实际目录吗?
  • 我是通过这个命令“php artisan storage:link”创建的

标签: php laravel laravel-5 eloquent


【解决方案1】:

首先在 .env 文件中创建一个名为 FILESYSTEM_DRIVER 的变量并将其设置为 public 像这样

FILESYSTEM_DRIVER=public

然后运行创建符号链接

php artisan storage:link

然后使用asset()

<img src="{{ asset('storage/'.$cv->photo) }}" alt="...">

它会很好用?

【讨论】:

  • 嘿,我被困了好几个小时。互联网上有很多关于创建存储链接的建议,但我没有读到任何关于 FILESYSTEM_DRIVER 的信息。这为我解决了。谢谢
  • FILESYSTEM_DRIVER 变量不需要使用 laravel 8
【解决方案2】:

public 磁盘用于存放可公开访问的文件。默认情况下,public 磁盘使用本地驱动程序并将这些文件存储在storage/app/public 中。要使它们可以从 Web 访问,您应该创建一个从 public/storagestorage/app/public 的符号链接。 Laravel doc

Linux中创建符号链接

ln -s source_file myfile

【讨论】:

  • 还有php artisan storage:link
  • 当然,我使用 php artisan storage:link 和在 public/storage/image 中创建的文件夹,当我想显示文件时,因为 public/storage/image 为空
  • 推荐:php artisan storage:link
【解决方案3】:

进入公共目录并运行:

rm storage

然后进入项目根目录运行:

php artisan storage:link

【讨论】:

    【解决方案4】:

    只需对文件系统配置/文件系统进行简单修改即可解决此问题 来自:

    'local' => [
                'driver' => 'local',
                'root' => storage_path('app'),
            ]
    

    到:

    'local' => [
                'driver' => 'local',
                'root' => storage_path('app/public'),
            ]
    

    【讨论】:

      【解决方案5】:

      正如 Mayank Majithya 所指出的,符号链接是从 public/ 目录访问 storage/app/public/ 文件的一种常见方式,事实上,the Laravel docs 表示您应该使用该方法。

      如果您在不允许这样做的共享主机上,您也可以尝试使用 Laravel 的 storage_path() 辅助函数,例如:&lt;img src="{{ storage_path('subpaths/under/storage/filename.jpg') }}"&gt; (reference)。

      我还注意到您提到图像存储在数据库中。如果您的意思是存储整个文件,那么仅将文件路径存储在数据库中而不是整个文件(因为它已经存储在磁盘上)可能更有效(一旦您确定了文件路径)。然后,您可以使用您的模型来获取路径(假设您的表有列,例如“src”和“alt”):

      <img src="{{ $mymodel->src }}" alt="{{ $mymodel->alt }}">
      

      【讨论】:

        【解决方案6】:

        这对我有用。我添加了命令“Artisan::call('storage:link', []);”到路由文件的开头并从公共中删除存储文件夹。

        一定要先删除文件夹,否则不行。

        从路由中删除代码,如果它正在工作,因为它应该只在服务器上运行一次。

        【讨论】:

        • 这对我有用!谢谢!
        【解决方案7】:

        如果您无法通过运行在 LAMP 上创建符号链接

        php artisan storage:link 
        

        然后运行

         ln -s public_html/storage/app/public public_html/public/storage
        

        如果您不在 public_html 或根文件夹中,则运行

          ln -s /application/xyhpnqyw/public_html/storage/app/public /application/xyhpnqyw/public_html/public/storage
            target='/application/xyhpnqyw/public_html/storage/app/public'
            shortcut='/application/xyhpnqyw/public_html/public/storage'
        

        然后运行这些命令

        【讨论】:

          猜你喜欢
          • 2018-02-03
          • 1970-01-01
          • 1970-01-01
          • 2017-11-19
          • 1970-01-01
          • 1970-01-01
          • 2019-01-11
          • 1970-01-01
          • 2018-09-03
          相关资源
          最近更新 更多