阿里云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 endpoint
aliyun.oss.file.keyid=your accessKeyId
aliyun.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.springframework.stereotype.Component;

/**
 * oss存储配置类
 * 当项目已启动,spring接口,spring加载之后,执行接口一个方法
 */
@Component
public 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;

    @Override
    public 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.xiaogui.security.common.results.ResultEnum;
import com.xiaogui.security.common.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 {

    @Autowired
    private OssService ossService;

    /**
     * 删除文件远程方法
     */
    @PostMapping(value = "deleteFile")
    @ApiOperation(value = "单个删除", notes = "单个删除")
    public ResultResponse deleteFile(String fileName) {
        //获取删除文件  fileName
        /**
         * 填写文件名。文件名包含路径,不包含Bucket名称。
         * 例如2021/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("2021/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
 */
@Service
public class OssService {

    /**
     * 删除单个文件
     */
    public boolean deleteFile(String fileName) {
        /**
         * 工具类获取值
         */
        // yourEndpoint填写Bucket所在地域对应的Endpoint。
        // 以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = ConstantPropertiesUtils.END_POINT;
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        // 填写Bucket名称,例如examplebucket
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
        /**
         * 填写文件名。文件名包含路径,不包含Bucket名称。
         * 例如2021/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-hangzhou.aliyuncs.com。
        String endpoint = ConstantPropertiesUtils.END_POINT;
        // 阿里云账号AccessKey拥有所有API的访问权限,
        // 风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        // 填写Bucket名称,例如examplebucket
        String 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;
    }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
删除阿里云OSS上的文件,可以按照以下步骤进行操作: 1. 首先,确定要删除文件的ID或名称。 2. 使用阿里云管理控制台登录到您的阿里云账号。 3. 找到并打开OSS服务。 4. 在OSS服务页面上,找到您要删除文件所在的存储空间(Bucket)。 5. 在存储空间中,找到您要删除文件。 6. 选中要删除文件,然后点击删除按钮。 7. 在确认对话框中,确认删除操作。 8. 等待一段时间,待删除操作完成后,文件将被彻底从阿里云OSS删除。 请注意,在执行删除操作之前,请确认您有足够的权限,并且谨慎操作,以免误删重要文件。引用引用了使用阿里云管理控制台来完成OSS基本操作的流程。引用提供了阿里云对象存储服务(OSS)的相关信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [yii2.0整合阿里云oss删除单个文件的方法](https://download.csdn.net/download/weixin_38692928/13734085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [OSS云存储概念、在阿里云中如何创建、控制台上传下载删除文件以及访问日志设置](https://blog.csdn.net/weixin_44795847/article/details/123651982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值