diff --git a/app/service/OssService.php b/app/service/OssService.php index 75dd524..21d4d1e 100644 --- a/app/service/OssService.php +++ b/app/service/OssService.php @@ -65,6 +65,14 @@ 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); @@ -75,6 +83,12 @@ class OssService 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); @@ -86,7 +100,12 @@ class OssService 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 diff --git a/plugin/admin/app/controller/VehicleController.php b/plugin/admin/app/controller/VehicleController.php index 43919a5..3f738bd 100644 --- a/plugin/admin/app/controller/VehicleController.php +++ b/plugin/admin/app/controller/VehicleController.php @@ -140,7 +140,7 @@ class VehicleController extends Crud try { $ossservice = new OssService(); // 使用更短的过期时间(5分钟) - $img_url = $ossservice->generatePrivateUrl($item['img_url'], 300); + $img_url = $ossservice->generatePrivateUrl($item['img_url'], 86400); Log::info("Vehicle image URL generation:", [ 'original_url' => $item['img_url'], 'generated_url' => $img_url,