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

发布于 2022-09-12 23:23:59 字数 1104 浏览 15 评论 0

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...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夕色琉璃 2022-09-19 23:24:00

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

英雄似剑 2022-09-19 23:24:00

可以在上传完之后,调用

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

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

帥小哥 2022-09-19 23:24:00

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

相当于执行 Linux 环境下 ln -s ...

php artisan storage:link

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

主要基于分布式考虑,即:现有互联网的大多 web 的服务是多节点,而非单节点。意味着需要考虑多节点下的文件分布式共享写入、读取问题。

  • 方式一:云存储方案,如:OSS、S3 等;适用如:图片等静态资源类
  • 方式二:依靠网络文件服务挂载方式,共享多节点的文件目录,如:NFS;适用如:低频文件日志/临时文件等
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文