Laravel Orchid中如何获取已上传文件附件的相对URL?
Laravel Orchid 获取附件相对URL方法
$attachment->url() 方法默认会拼接当前应用的域名生成完整绝对URL,要获取你需要的/storage开头的相对URL,直接读取附件模型的path属性即可,这个属性存储的就是文件的公开相对路径,和你预期的格式完全匹配。
代码示例
修改你的上传逻辑如下:
public function uploadPhoto(Request $request) { $file = new File($request->file('fileData')); $attachment = $file->load(); // 直接取path属性即为相对URL $relativeUrl = $attachment->path; error_log("Uploaded relative url: ". $relativeUrl); return response()->json([ 'file_url' => $relativeUrl ]); }
兼容方案(不推荐)
如果你已经拿到了完整URL结果,也可以通过PHP内置方法解析出路径部分,但这种方式性能比直接读属性差,仅适合临时兼容场景:
$fullUrl = $attachment->url(); $relativeUrl = parse_url($fullUrl, PHP_URL_PATH);
注意事项
- 请确认
config/platform.php中附件使用的磁盘为public磁盘,且已经执行过php artisan storage:link命令创建了存储软链接,返回的相对路径可以直接在前端正常访问。 - 直接读取
path属性是Orchid原生兼容的写法,后续框架版本升级不会出现路径匹配错误问题。
内容的提问来源于stack exchange,提问作者dobrovv
相关产品推荐
相关产品推荐

