longjuan 21b752dd25 feat: check the file already exists before uploading (#11)
Fixes https://github.com/halo-dev/halo/issues/2945
```release-note
Add file check with the same name when uploading
```

我这里使用了ConcurrentHashMap避免**同时**上传两个同名文件导致文件覆盖问题,在本地存储策略中是由操作系统保证的
不知道这样是不是一个好方法

S3AsyncClient中没有`doesObjectExist`类似的方法,官方的文档也让用`headObject`捕获异常的办法来判断文件是否存在,详见https://github.com/aws/aws-sdk-java-v2/blob/master/docs/LaunchChangelog.md 中搜索`doesObjectExist`
2023-01-28 06:40:10 +00:00
2022-08-29 11:22:49 +08:00
2022-12-01 13:48:12 +08:00
2022-12-01 13:48:12 +08:00
2022-08-29 11:22:49 +08:00
2022-08-29 11:22:49 +08:00
2022-08-29 11:22:49 +08:00
2022-12-23 11:05:16 +08:00
2022-12-23 11:30:43 +08:00

plugin-s3

为 Halo 2.0 提供 S3 协议的对象存储策略,支持阿里云、腾讯云、七牛云等兼容 S3 协议的对象存储服务商

开发环境

./gradlew build

修改 Halo 的配置文件

plugin:
  runtime-mode: development # development, deployment
  classes-directories:
    - "build/classes"
    - "build/resources"
  lib-directories:
    - "libs"
  fixedPluginPath:
    - "path/to/plugin-s3"

启动 Halo 之后即可在后台插件管理看到此插件。

生产构建

./gradlew build

构建完成之后,可以在 build/libs 目录得到插件的 JAR 包,在 Halo 后台的插件管理上传即可。

使用方法

  1. Releases 下载最新的 JAR 文件。
  2. 在 Halo 后台的插件管理上传 JAR 文件进行安装。
  3. 进入后台附件管理。
  4. 点击右上角的存储策略,在存储策略弹框的右上角可新建 S3 Object Storage 存储策略。
  5. 创建完成之后即可在上传的时候选择新创建的 S3 Object Storage 存储策略。
Description
为 Halo 提供 S3 对象存储协议的存储策略
Readme GPL-3.0 10 MiB
Languages
Java 52.1%
TypeScript 37.2%
Vue 10.2%
JavaScript 0.5%