PicGo Amazon S3 上传插件。
- 支持 Amazon S3 与其他兼容 S3 API 的云存储 (例如 Backblaze B2)。
- 支持 PicGo GUI。
- 支持 MinIO。
GUI 用户可直接在插件市场搜索 s3 并下载。
Core 用户可执行 picgo add s3 命令安装。
picgo set uploader s3| Key | 说明 | 示例 |
|---|---|---|
accessKeyID | AWS 凭证 ID。 | |
secretAccessKey | AWS 凭证密钥。 | |
bucketName | S3 桶名称。 | gallery |
uploadPath | 上传路径,详细配置请查看以下说明。 | {year}/{month}/{fullName} |
endpoint | 指定自定义终端节点。 | s3.us-west-2.amazonaws.com |
proxy | 代理地址,支持 http 代理。 | http://127.0.0.1:1080 |
region | 指定执行服务请求的区域。 | us-west-1 |
pathStyleAccess | 是否启用 S3 Path style 访问模式。 例如 https://s3.amazonaws.com/<bucketName>/<key>。使用 MinIO 时请设置为 true。 | 默认为 false |
rejectUnauthorized | 是否拒绝无效的 TLS 证书连接。 如上传失败日志显示证书问题可设置为 false。 | 默认为 true |
acl | 访问控制列表 (ACL),用于设置资源的访问策略。 可选值: private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control。 | 默认为 public-read |
outputURLPattern | 自定义输出 URL 模板,详细配置请查看以下说明。 | {protocol}://{host}:{port}/{path} |
urlPrefix | [已废弃] 自定义 URL 前缀。请使用 outputURLPattern。 | https://img.example.com/my-blog/ |
urlSuffix | [已废弃] 自定义 URL 后缀。请使用 outputURLPattern。 | ?oxx=xxx |
disableBucketPrefixToURL | [已废弃] 禁用 URL 中的 bucket 前缀。请使用 outputURLPattern。 | 默认为 false |
uploadPath 和 outputURLPattern 均支持通用占位符,插件会将其替换为实际变量。
| 占位符 | 描述 |
|---|---|
{year} | 年 |
{month} | 月 |
{day} | 日 |
{hour} | 时 |
{minute} | 分 |
{second} | 秒 |
{millisecond} | 毫秒 |
{timestamp} | Unix 时间戳 (秒) |
{timestampMS} | Unix 时间戳 (毫秒) |
除了通用占位符外,还支持以下变量:
| 占位符 | 描述 |
|---|---|
{fullName} | 完整文件名 (含扩展名) |
{fileName} | 文件名 (不含扩展名) |
{extName} | 扩展名 (不含 .) |
{md5} | 图片 MD5 |
{sha1} | 图片 SHA1 |
{sha256} | 图片 SHA256 |
此配置将替代已废弃的 urlPrefix、urlSuffix 和 disableBucketPrefixToURL。
除了通用占位符外,还支持以下变量:
| 占位符 | 描述 | 示例 |
|---|---|---|
{protocol} | URL 协议 | http 或 https |
{host} | URL 域名 | s3.amazonaws.com |
{port} | URL 端口 | 80 |
{dir} | 上传目录 | xxx/2024/12 |
{uploadedFileName} | 上传后的文件名 (含扩展名) | 4aa4f41e38817e5fd38ac870f40dbc70.jpg |
{path} | 完整路径 ({dir}/{uploadedFileName}) | xxx/2024/12/4aa4f41e38817e5fd38ac870f40dbc70.jpg |
{fileName} | 源文件名 (含扩展名) | test.jpg |
{extName} | 源文件扩展名 (不含 .) | jpg |
{query} | URL 查询参数 (不含 ?) | height=100&width=200 |
{hash} | URL hash (不含 #) | abc |
{bucket} | S3 桶名 | my-bucket |
每个变量都支持通过正则表达式进行替换(正则替换表达式中间不能有空格)。
语法:
{payload:/pattern/flags,'replacement'} 示例: 假设配置为 {protocol}://example.com/{path:/testBucket/i,'myimage'}, 并且原始 URL 为 https://cluster.s3.example.com/testBucket/image.jpg, 则最终生成的 URL 为 https://example.com/myimage/image.jpg。
{ "picgo-plugin-s3": { "accessKeyID": "xxx", "secretAccessKey": "xxxxx", "bucketName": "my-bucket", "uploadPath": "{year}/{md5}.{extName}", "endpoint": "s3.us-west-000.backblazeb2.com", "outputURLPattern": "https://img.example.com/{bucket}/{path}" } }如果 PicGo 按以上配置,上传 sample.png,最终得到的图片地址可能为:https://img.example.com/my-bucket/2021/4aa4f41e38817e5fd38ac870f40dbc70.png。
执行以下任一命令,会自动更新 package.json 的版本号并生成一个 commit 推送到远程仓库。GitHub Action 将会自动编译、打包并发布到 NPM。
# 更新补丁版本 (patch) npm run patch # 更新次要版本 (minor) npm run minor # 更新主要版本 (major) npm run major- Clone this repo
npm i && npm run devcd ~/.picgo && npm install ${path_to_the_repo}
欢迎提交 Pull Request。对于重大更改,请先开一个 Issue 进行讨论。
Released under the MIT License.