Lumen 文件存储,公共磁盘下的文件如何同步到public/storage下?

Lumen版本:6.x

filesystems.php配置:

'disks' => [
     'local' => [
     'driver' => 'local',
     'root' => storage_path('app'),
 ],
 'public' => [
     'driver' => 'local',
     'root' => storage_path('app/public'),
     'url' => env('APP_URL').'/storage',
     'visibility' => 'public',
 ],
 's3' => [
     'driver' => 's3',
     'key' => env('AWS_ACCESS_KEY_ID'),
     'secret' => env('AWS_SECRET_ACCESS_KEY'),
     'region' => env('AWS_DEFAULT_REGION'),
     'bucket' => env('AWS_BUCKET'),
     'url' => env('AWS_URL'),
 ],
],

用lumen框架的时候,文件存储到了storage/app/public 公共磁盘下 然后想通过url访问 就执行了 php artisan storage:link 命令 创建一个符号链接到 public/storage目录

执行命令的时候storage/app/public目录下的文件被软链到了public/storage

但是后面新增的保存在 storage/app/public目录下的文件 怎么实时同步到public/storage 呢?
看了文档文件存储 |《Laravel 6 中文文档 6.x》但是里面没有相关的描述

请问大家遇到过这种情况吗?应该怎么处理比较好

(想到一种方法,就是每次新增文件的时候,手动复制文件到public/storage目录下,但是这样感觉太low...

阅读 5k
3 个回答

百度一下linux 软链接.
相当于执行了 ln -s storage/app/public public/storage
不是同步, 而是这两目录就是一个地方.

可以在上传完之后,调用

Storage::copy('storage/app/public/file.jpg', 'public/storage/file.jpg');

复制图片到 public/storage,但是不建议这样做,具体可参考: [Laravel]:https://learnku.com/docs/lara...

官方文档推荐的方法是创建软连接:

相当于执行 Linux 环境下 ln -s ...
php artisan storage:link

实际生产应用推荐的方式:

主要基于分布式考虑,即:现有互联网的大多 web 的服务是多节点,而非单节点。意味着需要考虑多节点下的文件分布式共享写入、读取问题。
  • 方式一:云存储方案,如:OSS、S3 等;适用如:图片等静态资源类
  • 方式二:依靠网络文件服务挂载方式,共享多节点的文件目录,如:NFS;适用如:低频文件日志/临时文件等
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题