Springboot 阿里云OSS对象存储

        Springboot 阿里云OSS对象存储

        OSSController

package com.wzb.OSSController20241009;


import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import com.wzb.pojo20241009.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@RestController
public class OSSController {

    @PostMapping("/OSSUpload")
    public Result upload(String username, Integer age, MultipartFile image) throws IOException {
        // 获取原文件名
        String originalFileName = image.getOriginalFilename();
        // 获取原文件的扩展名
        String externalFileName = ".txt";
        if (originalFileName != null) {
            // 从最后一个.开始进行字符串切割,就可以成功得到原文件的扩展名
            externalFileName = originalFileName.substring(originalFileName.lastIndexOf("."));
        }
        // 使用UUID给文件重命名
        String newFileName = UUID.randomUUID().toString() + externalFileName;
        // 先保存到本地
        String filePath = "E:/images/" + newFileName;
        image.transferTo(new File(filePath));

        // 准备阿里云
        // 声明bucket的Endpoint
        String endpoint = "https://oss-cn-chengdu.aliyun.com";
        // 声明阿里云账号
        String accessKeyId = "LTAI5tKr5ZzpE1BRJ4yHGEVQ";
        String accessKeySecret = "DqZAfe3cXfX79J72RmcszqEX0wG3D5";
        // 声明bucket的名称
        String bucketName = "wzb-study";
        // 创建ossClient对象
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 创建ossClient的方法:OssClientBuilder中的build方法,需要传递endpoint、accessKeyId和accessKeySecret才可以成功创建

        // 准备上传
        try {
            // 开启文件输入流
            InputStream inputStream = new FileInputStream(filePath);
            // 创建PutObjectRequest对象
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, newFileName, inputStream);
            // 这是一个上传对象的请求类,需要传递保存至哪个bucket的bucketName,需要上传的文件的文件名,文件输入流

            // 可以返回response,若不设置,则返回的response为null
            putObjectRequest.setProcess("true");
            // 创建PutObject请求 >> 这步就是上传了
            PutObjectResult result = ossClient.putObject(putObjectRequest);
            // 上传成功后的返回值
            System.out.println(result.getResponse().getStatusCode());
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }

        // 响应
        return Result.success();
    }
}

        EmpService

package com.wzb.service20241009;

import com.wzb.mapper20241009.EmpMapper;
import com.wzb.pojo20241009.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;

@Service
public class EmpServiceImplement implements EmpService{
    @Autowired
    private EmpMapper empMapper;

    @Override
    public Emp selectEmp(Integer id) {
        return empMapper.selectEmp(id);
    }

    @Override
    public void update(Emp emp) {
        // 为emp补全信息————将员工的修改时间更新为当前的时间
        emp.setUpdateTime(LocalDateTime.now());
        // 调用Mapper层的方法操作数据库完成更新
        empMapper.updateEmp(emp);

    }
}

         EmpMapper

package com.wzb.mapper20241009;

import com.wzb.pojo20241009.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface EmpMapper {

    @Select("select * from emp where id = #{id}")
    public Emp selectEmp(Integer id);

    // 因为更新员工数据的SQL语句相对比较复杂,所以说需要使用xml动态SQL
    public void updateEmp(Emp emp);
}

        Emp类

package com.wzb.pojo20241009;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;
    private Integer deptId;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
}

        响应结果Result

package com.wzb.pojo20241009;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code; // 响应码,1是响应成功,2是响应失败
    private String message; // 响应信息,描述响应结果的字符串
    private Object data; // 响应返回的数据

    // 响应成功,但不返回数据的方法
    public static Result success() {
        return new Result(1, "success", null);
    }
    // 响应成功,并且返回数据的方法
    public static Result success(Object data) {
        return new Result(1,"success", data);
    }
    // 响应失败的方法
    public static Result fail(String message) {
        return new Result(0, message, null);
    }
}

         

 

 

 

SpringBoot可以通过整合阿里云OSS对象存储服务来实现文件上传和管理功能。具体实现可以参考以下步骤: 1. 在service层定义FileService接口,该接口包含上传文件到阿里云OSS的方法。例如,可以使用MultipartFile作为参数,返回上传成功后的文件URL。 2. 在controller层编写FileApiController类,该类使用@RestController注解标识为控制器,并使用@RequestMapping注解指定请求路径。在该类中,通过@Autowired注入FileService,并在文件上传的接口方法中调用FileService的上传文件方法并返回上传成功后的文件URL。 3. 在配置文件中配置阿里云OSS的相关信息,包括accessKey、secretKey、bucketName等。可以使用SpringBoot提供的@ConfigurationProperties注解来读取配置文件中的信息。 4. 在pom.xml文件中添加阿里云OSS SDK的依赖。 5. 编写上传文件的前端界面,可以使用HTML或者前端框架如Vue.js、React等。 通过以上步骤的实现,SpringBoot就可以整合阿里云OSS对象存储服务,实现文件上传和管理功能。这样可以将文件存储在阿里云OSS中,提高文件的安全性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot整合阿里云OSS对象存储服务的实现](https://download.csdn.net/download/weixin_38649091/12721580)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [全网最详细SpringBootSpringCloud整合阿里云OSS对象存储服务](https://blog.csdn.net/weixin_55076626/article/details/127924003)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值