Skip to content

Commit

Permalink
Merge pull request #32 from 1171736840/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
1171736840 authored Aug 17, 2022
2 parents 9ad344d + 7b30517 commit 52b2e70
Show file tree
Hide file tree
Showing 27 changed files with 1,215 additions and 34 deletions.
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@

# 简介
在 SpringBoot 中通过简单的方式将文件存储到
本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO、
本地、FTP、SFTP、WebDAV、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO、
AWS S3、金山云 KS3、美团云 MSS、京东云 OSS、天翼云 OOS、移动云 EOS、沃云 OSS、
网易数帆 NOS、Ucloud US3、青云 QingStor、平安云 OBS、首云 OSS、IBM COS、其它兼容 S3 协议的平台

查看 [所有支持的存储平台](存储平台)

后续即将支持 谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS
后续即将支持 谷歌云存储、Samba、NFS

GitHub:https://github.com/1171736840/spring-file-storage
<br />
Expand Down
4 changes: 4 additions & 0 deletions docs/_navbar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* 文档版本 0.5.0

* [0.5.0](https://spring-file-storage.xuyanwu.cn/)
* [0.4.0](https://spring-file-storage.xuyanwu.cn/0.4.0/)
5 changes: 5 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@
<script>
window.$docsify = {
loadSidebar: true,
loadNavbar: true,
subMaxLevel: 3,
name: 'X Spring File Storage',
repo: 'https://github.com/1171736840/spring-file-storage',
auto2top: true,
search: {
placeholder: '搜索'
},
copyCode: {
buttonText: '点击复制',
errorText: '错误',
Expand All @@ -38,6 +42,7 @@
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-sql.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-pagination/dist/docsify-pagination.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>

</body>
</html>
9 changes: 8 additions & 1 deletion docs/存储平台.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,17 @@
目前支持多种存储平台,你也可以根据需要自行扩展

## 支持的存储平台
| 平台 | 支持 |
|------|------|
| 本地 ||
| FTP ||
| SFTP ||
| WebDAV ||

**对象存储**

| 平台 | 官方 SDK | AWS S3 SDK | S3 兼容说明 |
| ------- | ------- | ------- | ------- |
| 本地 | - | - | - |
| AWS S3 ||| - |
| MinIO ||| [查看](http://docs.minio.org.cn/docs/master/java-client-quickstart-guide) |
| 阿里云 OSS ||| [查看](https://help.aliyun.com/document_detail/64919.html#title-cds-fai-yxp) |
Expand Down
70 changes: 68 additions & 2 deletions docs/快速入门.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,34 @@
<version>1.12.272</version>
</dependency>

<!-- FTP 不使用的情况下可以不引入 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>

<!-- SFTP 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>

<!--糊涂工具类扩展,如果要使用 FTP、SFTP 则必须引入,否则不用引入-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-extra</artifactId>
<version>5.8.5</version>
</dependency>

<!-- WebDAV 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.github.lookfirst</groupId>
<artifactId>sardine</artifactId>
<version>5.10</version>
</dependency>

</dependencies>
```

Expand All @@ -79,13 +107,21 @@ spring:
file-storage: #文件存储配置
default-platform: local-1 #默认使用的存储平台
thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
local: # 本地存储,不使用的情况下可以不写
local: # 本地存储(不推荐使用),不使用的情况下可以不写
- platform: local-1 # 存储平台标识
enable-storage: true #启用存储
enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
domain: "" # 访问域名,例如:“http://127.0.0.1:8030/test/file/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
base-path: D:/Temp/test/ # 存储地址
path-patterns: /test/file/** # 访问路径,开启 enable-access 后,通过此路径可以访问到上传的文件
local-plus: # 本地存储升级版,不使用的情况下可以不写
- platform: local-plus-1 # 存储平台标识
enable-storage: true #启用存储
enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
domain: "" # 访问域名,例如:“http://127.0.0.1:8030/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
base-path: local-plus/ # 基础路径
path-patterns: /** # 访问路径
storage-path: D:/Temp/ # 存储路径
huawei-obs: # 华为云 OBS ,不使用的情况下可以不写
- platform: huawei-obs-1 # 存储平台标识
enable-storage: false # 启用存储
Expand Down Expand Up @@ -154,9 +190,39 @@ spring:
secret-key: ??
region: ?? # 与 end-point 参数至少填一个
end-point: ?? # 与 region 参数至少填一个
bucket-name: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.hn-bkt.clouddn.com/
base-path: s3/ # 基础路径
ftp: # FTP
- platform: ftp-1 # 存储平台标识
enable-storage: true # 启用存储
host: ?? # 主机,例如:192.168.1.105
port: 21 # 端口,默认21
user: anonymous # 用户名,默认 anonymous(匿名)
password: "" # 密码,默认空
domain: ?? # 访问域名,注意“/”结尾,例如:ftp://192.168.1.105/
base-path: ftp/ # 基础路径
storage-path: /www/wwwroot/file.abc.com/ # 存储路径,可以配合 Nginx 实现访问,注意“/”结尾,默认“/”
sftp: # SFTP
- platform: sftp-1 # 存储平台标识
enable-storage: true # 启用存储
host: ?? # 主机,例如:192.168.1.105
port: 22 # 端口,默认22
user: root # 用户名
password: ?? # 密码或私钥密码
private-key-path: ?? # 私钥路径,兼容Spring的ClassPath路径、文件路径、HTTP路径等,例如:classpath:id_rsa_2048
domain: ?? # 访问域名,注意“/”结尾,例如:https://file.abc.com/
base-path: sftp/ # 基础路径
storage-path: /www/wwwroot/file.abc.com/ # 存储路径,可以配合 Nginx 实现访问,注意“/”结尾,默认“/”
webdav: # WebDAV
- platform: webdav-1 # 存储平台标识
enable-storage: true # 启用存储
server: ?? # 服务器地址,例如:http://192.168.1.105:8405/
user: ?? # 用户名
password: ?? # 密码
domain: ?? # 访问域名,注意“/”结尾,例如:https://file.abc.com/
base-path: webdav/ # 基础路径
storage-path: / # 存储路径,可以配合 Nginx 实现访问,注意“/”结尾,默认“/”
```
注意配置每个平台前面都有个`-`号,通过以下方式可以配置多个
Expand Down
9 changes: 9 additions & 0 deletions docs/更新记录.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# 更新记录

## 0.6.0
2022-08-17
- 增加对 FTP 的支持
- 增加对 SFTP 的支持
- 增加对 WebDAV 的支持
- 增加增强版的本地存储平台 `LocalPlusFileStorage`,建议新项目使用,老项目为了兼容性继续使用 `LocalFileStorage`
- 优化又拍云 Uss
- 优化七牛云 Kodo

## 0.5.0
2022-08-11
- 增加对 ContentType 和 ContentLength 的支持
Expand Down
9 changes: 8 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage-parent</artifactId>
<packaging>pom</packaging>
<version>0.5.0</version>
<version>0.6.0</version>

<name>spring-file-storage-parent</name>
<description>A File Storage Service</description>
Expand Down Expand Up @@ -68,6 +68,13 @@
<artifactId>hutool-core</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-extra</artifactId>
<version>${hutool.version}</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand Down
32 changes: 30 additions & 2 deletions spring-file-storage-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage-test</artifactId>
<version>0.5.0</version>
<version>0.6.0</version>
<name>spring-file-storage-test</name>
<description>spring-file-storage 的测试和演示模块</description>

Expand All @@ -22,6 +22,34 @@

<dependencies>

<!-- WebDAV -->
<dependency>
<groupId>com.github.lookfirst</groupId>
<artifactId>sardine</artifactId>
<version>5.10</version>
</dependency>

<!-- SFTP -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>

<!-- FTP -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>

<!--糊涂工具类扩展-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-extra</artifactId>
<version>5.8.5</version>
</dependency>

<!-- AWS S3 -->
<dependency>
<groupId>com.amazonaws</groupId>
Expand Down Expand Up @@ -88,7 +116,7 @@
<dependency>
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage</artifactId>
<version>0.5.0</version>
<version>0.6.0</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ public FileInfo getByUrl(String url) {
*/
@Override
public boolean delete(String url) {
return remove(new QueryWrapper<FileDetail>().eq(FileDetail.COL_URL,url));
remove(new QueryWrapper<FileDetail>().eq(FileDetail.COL_URL,url));
return true;
}
}

Expand Down
44 changes: 41 additions & 3 deletions spring-file-storage-test/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,23 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver

file-storage: #文件存储配置,不使用的情况下可以不写
default-platform: local-1 #默认使用的存储平台
default-platform: local-plus-1 #默认使用的存储平台
thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
local: # 本地存储
local: # 本地存储(不推荐使用)
- platform: local-1 # 存储平台标识
enable-storage: true #启用存储
enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
domain: "" # 访问域名,例如:“http://127.0.0.1:8030/test/file/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
base-path: D:/Temp/test/ # 存储地址
path-patterns: /test/file/** # 访问路径,开启 enable-access 后,通过此路径可以访问到上传的文件
local-plus: # 本地存储升级版
- platform: local-plus-1 # 存储平台标识
enable-storage: true #启用存储
enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
domain: "" # 访问域名,例如:“http://127.0.0.1:8030/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
base-path: local-plus/ # 基础路径
path-patterns: /** # 访问路径
storage-path: D:/Temp/ # 存储路径
huawei-obs: # 华为云 OBS ,不使用的情况下可以不写
- platform: huawei-obs-1 # 存储平台标识
enable-storage: false # 启用存储
Expand Down Expand Up @@ -88,6 +96,36 @@ spring:
secret-key: ??
region: ?? # 与 end-point 参数至少填一个
end-point: ?? # 与 region 参数至少填一个
bucket-name: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.hn-bkt.clouddn.com/
base-path: s3/ # 基础路径
ftp: # FTP
- platform: ftp-1 # 存储平台标识
enable-storage: true # 启用存储
host: ?? # 主机,例如:192.168.1.105
port: 21 # 端口,默认21
user: anonymous # 用户名,默认 anonymous(匿名)
password: "" # 密码,默认空
domain: ?? # 访问域名,注意“/”结尾,例如:ftp://192.168.1.105/
base-path: ftp/ # 基础路径
storage-path: / # 存储路径,上传的文件都会存储在这个路径下面,默认“/”,注意“/”结尾
sftp: # SFTP
- platform: sftp-1 # 存储平台标识
enable-storage: true # 启用存储
host: ?? # 主机,例如:192.168.1.105
port: 22 # 端口,默认22
user: root # 用户名
password: ?? # 密码或私钥密码
private-key-path: ?? # 私钥路径,兼容Spring的ClassPath路径、文件路径、HTTP路径等,例如:classpath:id_rsa_2048
domain: ?? # 访问域名,注意“/”结尾,例如:https://file.abc.com/
base-path: sftp/ # 基础路径
storage-path: /www/wwwroot/file.abc.com/ # 存储路径,注意“/”结尾
webdav: # WebDAV
- platform: webdav-1 # 存储平台标识
enable-storage: true # 启用存储
server: ?? # 服务器地址,例如:http://192.168.1.105:8405/
user: ?? # 用户名
password: ?? # 密码
domain: ?? # 访问域名,注意“/”结尾,例如:https://file.abc.com/
base-path: webdav/ # 基础路径
storage-path: / # 存储路径,上传的文件都会存储在这个路径下面,默认“/”,注意“/”结尾
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,19 @@ public void delete() {

FileInfo fileInfo = fileStorageService.of(in).setOriginalFilename(filename).setPath("test/").setObjectId("0").setObjectType("0").putAttr("role","admin").thumbnail(200,200).upload();
Assert.notNull(fileInfo,"文件上传失败!");

log.info("尝试删除已存在的文件:{}",fileInfo);
boolean delete = fileStorageService.delete(fileInfo.getUrl());
Assert.isTrue(delete,"文件删除失败!" + fileInfo.getUrl());
log.info("文件删除成功:{}",fileInfo);

fileInfo = BeanUtil.copyProperties(fileInfo,FileInfo.class);
fileInfo.setFilename(fileInfo.getFilename() + "111.tmp");
fileInfo.setUrl(fileInfo.getUrl() + "111.tmp");
log.info("尝试删除不存在的文件:{}",fileInfo);
delete = fileStorageService.delete(fileInfo);
Assert.isTrue(delete,"文件删除失败!" + fileInfo.getUrl());
log.info("文件删除成功:{}",fileInfo);
}

/**
Expand Down
37 changes: 36 additions & 1 deletion spring-file-storage/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,49 @@
<parent>
<artifactId>spring-file-storage-parent</artifactId>
<groupId>cn.xuyanwu</groupId>
<version>0.5.0</version>
<version>0.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>spring-file-storage</artifactId>

<dependencies>

<!-- WebDAV -->
<dependency>
<groupId>com.github.lookfirst</groupId>
<artifactId>sardine</artifactId>
<version>5.10</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<!-- SFTP -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<!-- FTP -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<!--糊涂工具类扩展-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-extra</artifactId>
<scope>provided</scope>
<optional>true</optional>
</dependency>

<!-- AWS S3 -->
<dependency>
<groupId>com.amazonaws</groupId>
Expand Down
Loading

0 comments on commit 52b2e70

Please sign in to comment.