You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置October CMS的Mall插件将商品图片上传至AWS S3

解决October CMS Mall插件商品图片上传至AWS S3的配置问题

你已经完成了系统层面的存储基础配置,但Mall插件需要针对性设置才能切换到S3存储,以下是具体解决步骤:

1. 配置Mall插件专属存储磁盘

Mall插件有独立的媒体存储配置项,需修改config/mall.php文件:
找到media相关配置段,将disk值设为你的S3磁盘名(比如s3或你配置的uploads/media):

'media' => [
    'disk' => 's3',
    // 其余配置保持默认或按需调整
],

2. 绑定系统媒体库到S3

October的媒体库是Mall图片上传的底层依赖,需确认config/cms.php中媒体库的磁盘配置:

'media' => [
    'disk' => 's3',
],

3. 验证S3磁盘的公开访问权限

检查filesystem.php中的S3磁盘配置,确保visibility设为public(商品图片需要公开访问):

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
    'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
    'visibility' => 'public', // 必须设置为public
    'throw' => false,
],

4. 清除系统缓存

October的配置缓存可能导致新设置不生效,执行以下命令清除缓存:

php artisan config:clear
php artisan cache:clear
php artisan october:up

同时在后台「系统」->「清除缓存」中清除所有类型缓存。

5. 补充AWS S3 CORS配置

后台上传依赖浏览器Ajax请求,需配置S3桶的CORS规则允许你的网站域名访问:
进入AWS S3控制台,找到目标桶,在「权限」->「跨域资源共享(CORS)」中添加以下规则(替换为你的网站域名):

[
    {
        "AllowedHeaders": ["*"],
        "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
        "AllowedOrigins": ["https://your-site-domain.com"],
        "ExposeHeaders": []
    }
]

6. 验证环境变量正确性

确认.env文件中的AWS配置无拼写错误:

AWS_ACCESS_KEY_ID=你的访问密钥ID
AWS_SECRET_ACCESS_KEY=你的秘密访问密钥
AWS_DEFAULT_REGION=你的桶所在区域(如us-east-1)
AWS_BUCKET=你的桶名(需与权限策略中的MYBUCKET一致)
AWS_URL=https://你的桶自定义域名(可选)

完成以上配置后,重新尝试上传商品图片,即可存储到AWS S3中。

内容的提问来源于stack exchange,提问作者Mr. Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:08:15