我已经接管了Laravel项目,该项目已经部署了一段时间,该项目一直使用单独的存储文件夹来存储上传到各个网站的文件。我对Laravel的经验有限。我现在想使用一个位置来存储暂存和生产Laravel网站的文件,以减少重复文件占用的存储空间。
我设法设置了暂存,以将其文件保存到Productions存储文件夹中。我现在遇到的问题是,我们用来上传文件的<input>
组件试图从Stagings存储文件夹而不是Productions中获取这些文件以进行预览。
如何使<input>
组件从正确的位置(即Productions存储)而不是Stagings存储文件夹中成为要预览的文件源?
我正在研究将Stagings存储文件夹链接到Productions公用文件夹的符号链接,并放弃了它,因为它一次只允许一个文件夹链接。
如前所述,我已经成功设置了上载路径以使用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串联。
原来我去解决所有问题都是错误的。我不需要更改文件中的任何代码。
解决方案是从暂存站点存储/应用程序/公用文件夹设置符号链接,以指向生产站点存储/应用程序/公用文件夹。