From 172db2b30557e4adde0b6f5b203c0b947e5f5542 Mon Sep 17 00:00:00 2001 From: "HESU\\HESU" <1696136552@qq.com> Date: Wed, 30 Apr 2025 15:37:55 +0800 Subject: [PATCH] 1 --- app/service/OssService.php | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/app/service/OssService.php b/app/service/OssService.php index 21d4d1e..d141105 100644 --- a/app/service/OssService.php +++ b/app/service/OssService.php @@ -65,47 +65,18 @@ class OssService public function generatePrivateUrl($objectKey, $expireTime = 3600) { try { - // 验证参数 - if (empty($objectKey)) { - throw new \InvalidArgumentException('ObjectKey cannot be empty'); - } - if ($expireTime <= 0) { - throw new \InvalidArgumentException('ExpireTime must be greater than 0'); - } - - // 记录更详细的调试信息 - error_log("OSS URL Generation Debug:"); - error_log("Bucket: " . $this->bucket); - error_log("ObjectKey: " . $objectKey); - error_log("ExpireTime: " . $expireTime); - error_log("Current Time: " . time()); - error_log("Expiration Time: " . (time() + $expireTime)); - error_log("AccessKeyId: " . substr($this->accessKeyId, 0, 4) . "****"); - error_log("Endpoint: " . $this->endpoint); - - // 检查对象是否存在 - if (!$this->ossClient->doesObjectExist($this->bucket, $objectKey)) { - error_log("OSS Object does not exist: " . $objectKey); - throw new \RuntimeException('Object does not exist in OSS'); - } - // 生成 OSS 私有 URL $url = $this->ossClient->signUrl($this->bucket, $objectKey, $expireTime); - // 记录生成的 URL - error_log("Generated URL: " . $url); + // 修复签名编码问题 + $url = str_replace('%253D', '%3D', $url); + $url = str_replace('%252F', '%2F', $url); + $url = str_replace('%252B', '%2B', $url); return $url; } catch (OssException $e) { error_log("OSS Error: " . $e->getMessage()); - error_log("Error Code: " . $e->getCode()); - error_log("Error Trace: " . $e->getTraceAsString()); - error_log("Request ID: " . $e->getRequestId()); throw new \RuntimeException('OSS Error: ' . $e->getMessage()); - } catch (\Exception $e) { - error_log("General Error in generatePrivateUrl: " . $e->getMessage()); - error_log("Error Trace: " . $e->getTraceAsString()); - throw new \RuntimeException('Error generating private URL: ' . $e->getMessage()); } } } \ No newline at end of file