Laravel 5.4 存储链接

问题描述 投票:0回答:7

我想在 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>
php laravel laravel-5 eloquent
7个回答
34
投票

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

public
,如下所示

FILESYSTEM_DRIVER=public

然后通过运行创建符号链接

php artisan storage:link

之后只需使用 asset()

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

效果会很好😊


10
投票

进入公共目录:

cd public

运行此命令以删除存储文件夹:

rm -r storage

返回项目根目录:

cd ..

然后运行:

php artisan storage:link

6
投票

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

Linux

中创建符号链接
ln -s source_file myfile

4
投票

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

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

至:

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

2
投票

如果您无法通过运行在 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'

然后运行这些命令


1
投票

正如 Mayank Majithya 所指出的,符号链接是从

storage/app/public/
目录访问
public/
文件的一种常见方法,事实上,Laravel 文档 说你应该使用该方法。

如果您使用的共享主机不允许这样做,您也可以尝试使用 Laravel 的

storage_path()
辅助函数,如下所示:
<img src="{{ storage_path('subpaths/under/storage/filename.jpg') }}">
(reference)。

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

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

1
投票

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

一定要先删除该文件夹,否则无法使用。

从路由中删除代码(如果它有效),因为它应该只在服务器上运行一次。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.