我使用的是5.7.25版本的Laravel。
public/storage
到/storage/app/public
的符号链接。/storage/app/public/place-images
目录中。 files
中,该表保留了所有存储的文件。文件路径为public/images/some_hash.jpg
。 现在,我制作了一个文件资源,当我从API获取文件时会使用该资源。从api撤消的文件路径等于public/images/some_hash.jpg
。但是我需要将其设置为images/some_hash.jpg
。但是,在表中,我希望保留与存储文件夹相关的文件的真实路径。毕竟,我可以将文件保存在AWS或其他地方。
据我了解,storage
是我的disk
的根。 $file->store()
方法包括文件路径的public
部分。
我最终做了这样的事情:
// This is ImageResource file, Image model has File relation. One Image has one File
// TODO: Dirty hack
$path = $this->file->path; // This equals 'public/place-images/hash.jpg'
// Removing 'public' part
$charIndex = strpos($path, '/');
$path = substr($path, $charIndex + 1);
return [
'id' => $this->id,
'original_name' => $this->file->original_name,
url' => asset('storage/' . $path) // now we have /storage/place-images/some_hash.jpg which is correct
];
总有办法避免这种肮脏的骇客吗?我想我缺少明显的东西
答案 0 :(得分:0)
storage
不是磁盘的根。您可以在config\filesystems.php
中设置磁盘的根目录。 public
中定义的config/filesystems.php
磁盘的默认根目录是/storage/app/public
,因此只需存储place-images/hash.jpg
即可。