allbs工具类说明 - oss工具

allbs工具类说明 - oss工具
programApe依赖jar包
引入包 | 版本 |
---|---|
jdk | 1.8 |
spring boot | 2.7.4 |
spring-boot-autoconfigure | 2.7.4 |
spring-boot-starter-web | 2.7.4 |
aws-java-sdk-s3 | 1.12.332 |
jakarta.validation-api | 3.0.2 |
使用
添加依赖
<dependency>
<groupId>cn.allbs</groupId>
<artifactId>allbs-oss</artifactId>
<version>1.1.8</version>
</dependency>
implementation 'cn.allbs:allbs-oss:1.1.8'
implementation("cn.allbs:allbs-oss:1.1.8")
添加配置
oss:
endpoint: http://xxx.xxx.xxx.xxx:9000
region: us-west-rack-2
# minio账号或者
access-key: adadmin
# 密码
secret-key: 123456778
bucket-name: test
上传
代码示例
@PostMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file, String folder) {
folder = Optional.ofNullable(folder).orElse("folder");
String fileName = file.getOriginalFilename();
// 文件夹不存在创建
Map<String, Object> resultMap = new HashMap<>(4);
resultMap.put("fileName", fileName);
resultMap.put("url", String.format("/%s/%s", folder, fileName));
try {
ossTemplate.createBucket(folder);
ossTemplate.putObject(folder, fileName, file.getInputStream());
// el-upload 展示需要
resultMap.put("name", file.getOriginalFilename());
} catch (Exception e) {
log.error("上传失败", e);
return R.fail(e.getLocalizedMessage());
}
return R.ok(resultMap);
}
调用
效果
删除
代码示例
@ApiOperation(value = "通过文件名称删除文件管理", notes = "通过文件名称删除文件管理")
@DeleteMapping("/deleteFile")
public R removeById(@RequestParam("name") String name, @RequestParam("folder") String folder) throws Exception {
folder = Optional.ofNullable(folder).orElse("folder");
ossTemplate.removeObject(folder, name);
return R.ok();
}
调用
读取
代码示例
@GetMapping("/{bucket}/{fileName}")
@ApiOperation(value = "文件读取", notes = "文件读取")
public void file(@PathVariable String bucket, @PathVariable String fileName, HttpServletResponse response) {
try (S3Object s3Object = ossTemplate.getObject(bucket, fileName)) {
response.setContentType("application/octet-stream; charset=UTF-8");
IoUtil.copy(s3Object.getObjectContent(), response.getOutputStream());
} catch (Exception e) {
log.error("文件读取异常: {}", e.getLocalizedMessage());
}
}
调用
获取文件url
代码示例
@GetMapping("/{bucket}/{fileName}")
@ApiOperation(value = "文件读取", notes = "文件读取")
public R<String> fileUrl(@PathVariable String bucket, @PathVariable String fileName) {
return R.ok(ossTemplate.getObjectURL(bucket, fileName));
}
调用
获取文件url带过期时间
代码示例
@GetMapping("/{bucket}/{fileName}")
@ApiOperation(value = "文件读取", notes = "文件读取")
public R<String> fileUrl(@PathVariable String bucket, @PathVariable String fileName) {
// 文件十小时过期示例
return R.ok(ossTemplate.getObjectURL(bucket, fileName, Duration.ofHours(10)));
}
调用
文件批量上传
代码示例
@ApiOperation(value = "批量文件上传", notes = "文件批量上传")
@PostMapping(value = "/fileUpload", headers = "content-type=multipart/form-data")
public R save(@Valid @RequestParam(value = "files") MultipartFile[] files, @RequestParam("folder") String folder) {
if (files.length == 0) {
return R.fail("文件内容不能为空");
}
try {
// 获取文件夹名称
for (MultipartFile file : files) {
ossTemplate.putObject(folder, IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename()), file.getInputStream());
}
} catch (Exception e) {
return R.fail(e.getLocalizedMessage());
}
return R.ok();
}
调用
效果
云服务商oss服务示例
上传、下载、预览等代码同上方
添加配置
endpoint
access-key和secret-key
bucket-name
可不设置,如果需要一个基础文件夹则设置这个属性
效果
评论
匿名评论隐私政策