springboot实现图片阿里云阿里云Oss服务器

本文介绍如何使用SpringBoot实现图片上传至阿里云OSS服务。通过引入相关依赖,配置YML文件,以及编写控制层代码,详细阐述了图片存储的过程。注意,阿里云OSS上传的图片默认不可在线查看,需进行相应设置。
摘要由CSDN通过智能技术生成

一.项目需求
1.springboot实现图片阿里云阿里云Oss服务器,实现用户的相关的图片存储到阿里云Oss对象里面存储,下面是直接上代码形式,已经一些相关的说明

2.项目中引入依赖

<!--Oss-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.1.0</version>
        </dependency>

3.配置文件中的配置,我这里是配置yml的形式的
在这里插入图片描述

4.代码逻辑有点简单,所有就直接全部写在了控制层,见谅

/**
 * 上传图片到阿里云
 *
 * @author Gin
 */
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/student/oss")
public class OssController {

    private final OssService ossService;

    @Value("${aliyun.oss.file.keyid}")
    private String accessKeyId;
    @Value("${aliyun.oss.file.endpoint}")
    private String endPoint;
    @Value("${aliyun.oss.file.keysecret}")
    private String accessKeySecret;
    @Value("${aliyun.oss.file.bucketname}")
    private String bucketName;

    /**
     * 上传图片阿里云Oss服务器
     */
    @PostMapping("/upload/{type}")
    public RestResponse uploadPhoto(@PathVariable String type, MultipartFile file) throws IOException {

        // 创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
        // 获取上传文件流。
        InputStream inputStream = file.getInputStream();

        // 获取文件名称
        String fileName = file.getOriginalFilename();
        if (ObjectUtil.isNull(fileName)) {
            return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "文件名称错误");
        }

        String uuid = UUID.randomUUID().toString().replace("-", "");
        fileName = (uuid + fileName.substring(fileName.lastIndexOf(".")));

        String ossFile = "";
        String filePath = "";
        switch (type) {
            // 照片
            case "photo":
                ossFile = "photo";
                filePath = "photo" + "/" + fileName;
                break;
            // 体检表
            case "physical":
                ossFile = "physical_examination";
                filePath = "physical_examination" + "/" + fileName;
                break;
            // 审批表
            case "approval":
                ossFile = "approval";
                filePath = "approval" + "/" + fileName;
                break;
            default:
                return RestResponse.fail(SystemCode.ParameterValidError.getCode(), "未知类型");
        }

        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentType("image/jpg");
        // 调用OSS方法实现上传
        ossClient.putObject(bucketName, filePath, inputStream, meta);

        // 关闭OSSClient。
        ossClient.shutdown();

        return RestResponse.ok("https://" + bucketName + "." + endPoint + "/" + ossFile + "/" + fileName);
    }

}

5.我这里是上传三个不同的文件夹,所有返回的路径是动态获取的,还有下面有个地方要注意一下,阿里云默认上传的图片不是在线查看的,记得修改一下在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值