springboot实现oos上传下载

简介

OSS对象存储
  阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。

阿里云后台操作步骤

1.开通OSS服务

2.进入控制台

3.创建 Bucket

4.新建文件夹(存放文件)

5.创建完成后,在右上角头像栏找到AccessKey管理

6.点击 创建AccessKey,身份验证后,即可获取到KeyId和KeySercret

 实现

1.引入oos依赖

  <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

2.yml文件以及oss配置信息

application.yml

server:
  port: 8081

mybatis:
  type-aliases-package: com.wjj.springbootoos.pojo
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:/mapper/*.xml



spring: #springboot的配置
  datasource: #定义数据源
    #127.0.0.1为本机测试的ip,3306是mysql的端口号。serverTimezone是定义时区,照抄就好,mysql高版本需要定义这些东西
    #useSSL也是某些高版本mysql需要问有没有用SSL连接
    url: jdbc:mysql://localhost:3306/oos?serverTimezone=UTC
    username: root  #数据库用户名,root为管理员
    password: root #该数据库用户的密码mysql.session

application-aliyun-oos.properties

aliyun.endPoint=oss-cn-hangzhou.aliyuncs.com

aliyun.urlPrefix=junkai1.oss-cn-hangzhou.aliyuncs.com

aliyun.accessKeyId=LTAI5tPP4FLVrM92oSZxtWV6

aliyun.accessKeuSecrect=cxLRwCyr0z2QYKYvaDDPMLMDEYMLLP

aliyun.bucketName=junkai1

aliyun.fileHost=ketai

spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=200MB

这里需要填入直接的,可通过上面的AccessKey管理进入找到相对应的填入即可

config

AliyunOssConfig

封装对应属性 

service接口

实现类

上传


    @Autowired
    private OSS client;
    @Autowired
    private fileMapper mapper;
    @Autowired
    private AliyunOssConfig aliyunOssConfig;
    //共有属性代码 允许上传图片的格式
    private static final String[] IMAGE_TYPE =new String[]{
            ".bmp",".jpg",".jpeg",".gif",".png"
    };
    @Override
    public String upload(MultipartFile multipartFile) {
        //获取基本信息
        String endpoint=aliyunOssConfig.getEndPoint();
        String bucketName=aliyunOssConfig.getBucketName();
        String accesKeyId=aliyunOssConfig.getAccessKeyId();
        String accessKeuSecret=aliyunOssConfig.getAccessKeuSecrect();
        String fileHost=aliyunOssConfig.getFileHost();

        //校验格式
        boolean isLegal=false;
        for (String type:IMAGE_TYPE){
            if (StringUtils.endsWithIgnoreCase(multipartFile.getOriginalFilename(),type)){
                isLegal=true;
                break;
            }
        }
        if (isLegal==false){
            return StatusCode.ERROR.getMsg();
        }
        //1.获取文件名称
        String orName=multipartFile.getOriginalFilename();
        //2.获取文件的类型
        String fileType=orName.substring(orName.lastIndexOf("."));
        //3.新名称
        String newFileName= UUID.randomUUID().toString()+fileType;
        System.out.println(newFileName);
        //4.构建文件上传路径
        String filePath=new SimpleDateFormat("yyyy/MM/dd").format(new Date());
        //5.文件上传的路径
        String uploadUrl=fileHost+"/"+filePath+"/"+newFileName;
        System.out.println(uploadUrl);
        System.out.println(filePath);
        //6.开始上传
        InputStream inputStream=null;
        try {
            inputStream=multipartFile.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }

        ObjectMetadata meta=new ObjectMetadata();
        meta.setContentType("image/jpg");

        //上传阿里云
        client.putObject(bucketName,uploadUrl,inputStream,meta);

        mapper.add(newFileName,uploadUrl);
        return "http://"+bucketName+"."+endpoint+"/"+uploadUrl;
    }

删除

 controller层

下载 

<td><a th:href="'https://junkai1.oss-cn-hangzhou.aliyuncs.com/'+${file.url}">下载</a></td>

 下载只需将图片路径封装打a标签即可

### 整合 OpenIO 与 Spring Boot 的方法 #### 创建 Maven 或 Gradle 工程结构 为了实现 OpenIO 和 Spring Boot 的整合,项目应基于 Maven 或 Gradle 构建工具创建。确保 `pom.xml` 文件中包含了必要的依赖项来支持 Spring Boot 应用程序开发以及连接到 OpenIO SDS 存储服务所需库。 对于 Maven 用户,在 pom.xml 中加入如下配置[^1]: ```xml <dependency> <groupId>org.openio</groupId> <artifactId>sds-sdk-java</artifactId> <version>${openio.sdk.version}</version> </dependency> <!-- Spring Boot Starter Parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> ``` #### 配置 application.properties/yml 文件 在 src/main/resources 下面定义应用程序属性文件(application.yml),用于设置访问 OpenIO 实例所需的参数,比如 endpoint URL, namespace ID 等等[^2]: ```yaml openio: sds: endpoint: "https://your-openio-endpoint" ns: "YOUR_NAMESPACE_ID" account: "admin" key: "${OPENIO_SECRET_KEY}" ``` #### 编写 Java 类以操作 Object Storage Service (OOS) 通过自定义组件类可以轻松地管理对象存储资源。下面是一个简单的例子展示了如何上传文件至 OOS 并获取其元数据信息: ```java @Service public class OpenIoService { private final SdsClient client; @Autowired public OpenIoService(SdsClientBuilder builder){ this.client = builder.build(); } /** * Uploads a file to the specified container. */ public void uploadFile(String containerName, String objectName, File file) throws IOException { PutObjectRequest request = new PutObjectRequest(containerName, objectName); try(InputStream inputStream = Files.newInputStream(file.toPath())){ client.putObject(request.withContent(inputStream)); } } } ``` 上述代码片段实现了向指定容器内上传文件的功能,并利用了构造器注入的方式初始化了一个 `SdsClient` 客户端实例以便后续调用 API 方法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值