1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 阿里云OSS云存储删除(单个 指定的多个文件)删除文件

阿里云OSS云存储删除(单个 指定的多个文件)删除文件

时间:2024-09-01 03:56:51

相关推荐

阿里云OSS云存储删除(单个 指定的多个文件)删除文件

阿里云OSS云存储删除(单个,指定的多个文件)删除文件

配置pom.xml

<!--阿里云OSS 依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.13.2</version></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.13</version></dependency><!--Java 9及以上的版本,则需要添加jaxb相关依赖--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version></dependency>

配置application.properties或配置application.yml文件

#阿里云 OSS#不同的服务器,地址不同aliyun.oss.file.endpoint=your endpointaliyun.oss.file.keyid=your accessKeyIdaliyun.oss.file.keysecret=your accessKeySecret#bucket可以在控制台创建,也可以使用java代码创建aliyun.oss.file.bucketname=education-teacher

实现文件删除

创建常量读取工具类:ConstantPropertiesUtil.java

使用@Value读取application.properties里的配置内容

用spring的 InitializingBean 的 afterPropertiesSet 来初始化配置信息,这个方法将在所有的属性被初始化后调用。

package com.xiaogui.oss.utils;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;import org.ponent;/*** oss存储配置类* 当项目已启动,spring接口,spring加载之后,执行接口一个方法*/@Componentpublic class ConstantPropertiesUtils implements InitializingBean {//读取配置文件内容@Value("${aliyun.oss.file.endpoint}")private String endpoint;@Value("${aliyun.oss.file.keyid}")private String keyId;@Value("${aliyun.oss.file.keysecret}")private String keySecret;@Value("${aliyun.oss.file.bucketname}")private String bucketName;//定义公开静态常量public static String END_POINT;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POINT = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;}}

编写删除文件接口controller OssController类

package com.xiaogui.oss.controller;import com.xiaogui.oss.service.OssService;import com.mon.results.ResultEnum;import com.mon.results.ResultResponse;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import java.util.ArrayList;import java.util.List;@RestController@RequestMapping("fileOss")//@CrossOrigin // 跨域@Api(value = "文件删除oss", tags = "文件删除oss")public class OssController {@Autowiredprivate OssService ossService;/*** 删除文件远程方法*/@PostMapping(value = "deleteFile")@ApiOperation(value = "单个删除", notes = "单个删除")public ResultResponse deleteFile(String fileName) {//获取删除文件 fileName/*** 填写文件名。文件名包含路径,不包含Bucket名称。* 例如/09/14/52c6a3114e634979a2934f1ea12deaadfile.png。*/boolean flag = ossService.deleteFile(fileName);if (flag){return ResultResponse.of(true,101,"删除成功");} else {return ResultResponse.of(false,102,"删除失败");}}/*** 删除指定的多个文件*/@PostMapping(value = "deleteFileAll")@ApiOperation(value = "删除指定的多个文件", notes = "删除指定的多个文件")public ResultResponse deleteFileAll() {List<String> keys = new ArrayList<>();keys.add("course/1442295506745.jpg");keys.add("/12/29/33840e4244de4f989e60710b8bd09d9c1234.jpeg");keys.add("exampleobjectb.txt");List<String> result = ossService.deleteFileAll(keys);return ResultResponse.of(result, ResultEnum.SUCCESS,true);}

编写删除文件接口具体实现类 OssService类

package com.xiaogui.oss.service;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.aliyun.oss.OSSException;import com.aliyun.oss.model.DeleteObjectsRequest;import com.aliyun.oss.model.DeleteObjectsResult;import com.aliyun.oss.model.VoidResult;import com.xiaogui.oss.utils.ConstantPropertiesUtils;import org.joda.time.DateTime;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;import java.util.List;import java.util.UUID;/*** 文件删除oss*/@Servicepublic class OssService {/*** 删除单个文件*/public boolean deleteFile(String fileName) {/*** 工具类获取值*/// yourEndpoint填写Bucket所在地域对应的Endpoint。// 以华东1(杭州)为例,Endpoint填写为https://oss-cn-。String endpoint = ConstantPropertiesUtils.END_POINT;// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;// 填写Bucket名称,例如examplebucketString bucketName = ConstantPropertiesUtils.BUCKET_NAME;/*** 填写文件名。文件名包含路径,不包含Bucket名称。* 例如/09/14/52c6a3114e634979a2934f1ea12deaadfile.png。*/String objectName = fileName;boolean flag = false;try {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 删除文件。VoidResult voidResult = ossClient.deleteObject(bucketName, objectName);if (voidResult.getResponse().getStatusCode() == 204){flag = true;}// 关闭OSSClient。ossClient.shutdown();} catch (OSSException e){e.printStackTrace();}return flag;}/*** 删除指定的多个文件*/public List<String> deleteFileAll(List<String> keys) {/*** 工具类获取值*/// yourEndpoint填写Bucket所在地域对应的Endpoint。// 以华东1(杭州)为例,Endpoint填写为https://oss-cn-。String endpoint = ConstantPropertiesUtils.END_POINT;// 阿里云账号AccessKey拥有所有API的访问权限,// 风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;// 填写Bucket名称,例如examplebucketString bucketName = ConstantPropertiesUtils.BUCKET_NAME;// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 删除请求DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest(bucketName);// 赋值需要删除的文件deleteRequest.setKeys(keys);//deleteRequest.setEncodingType(URL_ENCODING);// 调用删除DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(deleteRequest);// 获取删除的文件List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();// 关闭OSSClient。ossClient.shutdown();return deletedObjects;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。