|
|
@@ -110,12 +110,21 @@ class ImageUploadService
|
|
|
$fullPath = $path . '/' . $fileName;
|
|
|
|
|
|
// 方式一:使用原生 AWS SDK 绕过 Laravel Storage
|
|
|
+ // 注意:生产环境执行 config:cache 后 env() 不再读取 .env,必须改用 config()
|
|
|
+ // 从 filesystems 配置读取 S3 连接信息,避免配置缓存导致 region 等参数为空。
|
|
|
+ $s3Config = config('filesystems.disks.s3', []);
|
|
|
+
|
|
|
+ $region = $s3Config['region'] ?? env('AWS_DEFAULT_REGION');
|
|
|
+ $key = $s3Config['key'] ?? env('AWS_ACCESS_KEY_ID');
|
|
|
+ $secret = $s3Config['secret'] ?? env('AWS_SECRET_ACCESS_KEY');
|
|
|
+ $bucket = $s3Config['bucket'] ?? env('AWS_BUCKET');
|
|
|
+
|
|
|
$s3Client = new S3Client([
|
|
|
'version' => 'latest',
|
|
|
- 'region' => env('AWS_DEFAULT_REGION'),
|
|
|
+ 'region' => $region,
|
|
|
'credentials' => [
|
|
|
- 'key' => env('AWS_ACCESS_KEY_ID'),
|
|
|
- 'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
|
|
+ 'key' => $key,
|
|
|
+ 'secret' => $secret,
|
|
|
],
|
|
|
'http' => [
|
|
|
'verify' => false, // 临时禁用 SSL 验证用于测试
|
|
|
@@ -123,7 +132,7 @@ class ImageUploadService
|
|
|
]);
|
|
|
|
|
|
$result = $s3Client->putObject([
|
|
|
- 'Bucket' => env('AWS_BUCKET'),
|
|
|
+ 'Bucket' => $bucket,
|
|
|
'Key' => $fullPath,
|
|
|
'Body' => (string) $image,
|
|
|
'ContentType' => 'image/webp',
|