Laravel - 为暂存和生产 post 部署设置公共存储

Laravel - Setting up common storage for staging and production post deployment

我接手了一个已经部署了一段时间的 Laravel 项目,该项目一直使用单独的存储文件夹来存储上传到各个网站的文件。我在 Laravel 方面的经验有限。我现在想使用一个位置来存储登台和生产 Laravel 网站的文件,以减少重复文件占用的存储空间 space。

我已经成功地设置了 Staging 以将其文件保存到 Productions 存储文件夹中。我现在遇到的问题是我们用来上传文件的 <input> 组件正在尝试从 Stagings 存储文件夹而不是 Productions 获取这些文件以进行预览。

我怎样做才能使 <input> 组件从正确的位置(即 Productions 存储)而不是 Stagings 存储文件夹中获取用于预览的文件?

我调查 symlinking 的目的是 linking Stagings 存储文件夹到 Productions public 文件夹并放弃了,因为它只允许一个文件夹到 link一次。

前面说到config/filesystems.php我已经陆续设置上传路径使用Productions存储文件夹,但是一直没找到设置<input>组件源的方法所以它将使用正确的 URL 来预览分配给它的文件。

更新存储路径参考

filesystems.php

'public' => [
    'driver' => 'local',
    'root' => storage_path('../../mywebsite.com/storage/app/public'),
    'url' => 'https://mywebsite.com/storage',
    'visibility' => 'public',
],

图像路径是如何创建的

FileUploadController.php

$filePath = Storage::url($request->file($file)->storeAs('/', Carbon::now()->timestamp . $request->file($file)->hashName(), 'public'));

我不确定还有哪些其他代码在这里有用,请随时询问,我会尽力提供。

我原以为 <input> 组件会根据文件的存储位置接收文件 URL 以显示预览。但似乎文件路径从 /storage/my-file-here.jpeg 开始,并在填充 <input> 组件的源之前与暂存网站 URL 连接。

原来我解决这个问题的方法全错了。我不需要更改文件中的任何代码。

解决方案是从暂存站点 storage/app/public 文件夹设置符号链接以指向生产站点 storage/app/public 文件夹。