From b0945e60283835052017f8b1a6d7cb8bac18db0c Mon Sep 17 00:00:00 2001 From: "HESU\\HESU" <1696136552@qq.com> Date: Wed, 30 Apr 2025 15:40:00 +0800 Subject: [PATCH] 1 --- app/service/OssService.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/service/OssService.php b/app/service/OssService.php index d141105..e24345f 100644 --- a/app/service/OssService.php +++ b/app/service/OssService.php @@ -68,10 +68,22 @@ class OssService // 生成 OSS 私有 URL $url = $this->ossClient->signUrl($this->bucket, $objectKey, $expireTime); - // 修复签名编码问题 - $url = str_replace('%253D', '%3D', $url); - $url = str_replace('%252F', '%2F', $url); - $url = str_replace('%252B', '%2B', $url); + // 解析 URL 以获取查询参数 + $parsedUrl = parse_url($url); + parse_str($parsedUrl['query'], $queryParams); + + // 重新构建 URL,确保参数正确编码 + $baseUrl = $parsedUrl['scheme'] . '://' . $parsedUrl['host'] . $parsedUrl['path']; + $queryString = http_build_query($queryParams); + + // 修复编码问题 + $queryString = str_replace('%253D', '%3D', $queryString); + $queryString = str_replace('%252F', '%2F', $queryString); + $queryString = str_replace('%252B', '%2B', $queryString); + $queryString = str_replace('%2525', '%25', $queryString); + + // 重新组合 URL + $url = $baseUrl . '?' . $queryString; return $url; } catch (OssException $e) {