阿里云OSS对象存储服务学习笔记

一、环境

java 1.8
spring boot 1.5.8
gradle3.2.1

二、OSS使用示例

1. OSS是阿里云提供的对象存储服务,功能非常强大,可以作为文件服务器,还提供了图片的常用操作。相关API文档:https://help.aliyun.com/document_detail/31947.html

2. 使用OSS接口需要添加OSS依赖,在build.gradle中添加依赖如下:

// 添加阿里云OSS服务的依赖
compile group: 'com.aliyun.oss', name: 'aliyun-sdk-oss', version: '2.8.2'

3. 在application.properties配置文件中配置OSS的accessId,accessKey,endpoint,bucket和host(当然,这里也可以直接在具体代码中定义,但建议配置到配置文件中比较方便维护)

#配置阿里云OSS文件服务器
oss.accessId=LTAII5Odxxxxxx
oss.accessKey=5FnVDhDjI1Fxxxxxxx
oss.endpoint=http://oss-cn-shenzhen.aliyuncs.com
oss.rm.bucket=rm
oss.rm.host=http://rm.oss-cn-shenzhen.aliyuncs.com

4. 主要代码:

@Value("${oss.accessId}")	
private String accessId;	//将配置文件的oss.accessId绑定为accessId

@Value("${oss.accessKey}")
private String accessKey;	//将配置文件的oss.accessKey绑定为accessKey

@Value("${oss.endpoint}")
private String endpoint;	//将配置文件的oss.endpoint绑定为endpoint

@Value("${oss.rm.bucket}")	
private String bucket;		//将配置文件的oss.rm.bucket绑定为bucket

@Value("${oss.rm.host}")
private String host;		//将配置文件的oss.rm.host绑定为host

/**
 * 上传到阿里云OSS
 * @param avatarFile
 * @param userId
 * @return
 * @throws IOException
 */
@Override
public Response uploadAvatar(MultipartFile avatarFile, Integer userId) throws IOException {
    if(!avatarFile.isEmpty()){
        String originalFilename = avatarFile.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        if(avatarFile.getSize() > 1 *1024 * 1024){//文件不得大于2M
            logger.error("文件过大!");
            return new Response(false, "文件过大!");
        }
        // 如果文件格式正确
        if(suffix.equalsIgnoreCase(".png") || suffix.equalsIgnoreCase(".jpg")){
            // 创建OSSClient实例
            OSSClient ossClient = new OSSClient(endpoint, accessId, accessKey);
            // 创建ObjectMetadata实例
            ObjectMetadata meta = new ObjectMetadata();
            meta.setContentType("image/" + suffix);
            // 上传文件流
            InputStream inputStream = avatarFile.getInputStream();
            String fileName = "rm-avatar/" + GetIDUtil.createIdByUUID() + suffix;
            ossClient.putObject(bucket, fileName, inputStream);

            // 删除上一个头像文件
            String oldAvatar = this.selectById(userId).getAvatar();
            if(null != oldAvatar && !"".equals(oldAvatar)){
                int index = oldAvatar.lastIndexOf("rm-avatar");
                // 如果不是默认头像则删除
                if(index != -1  && !"/img/default_avatar.png".equals(oldAvatar)){
                    String oldAvatarName = oldAvatar.substring(index);
                    ossClient.deleteObject(bucket, oldAvatarName);
                }
            }
            // 关闭client
            ossClient.shutdown();

            // 返回文件名和、文件路径和上传结果
            String imgPath = host + "/" + fileName;
            return new Response(true, "上传文件成功!", imgPath);
        }else{
            logger.error("文件格式不正确!");
            return new Response(false, "格式不正确!");
        }
    }
    return new Response(true, "文件为空!", null);
}

感谢您的阅读,欢迎参观我的个人网站:知行乐集【www.zhixinglj.cn】

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
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* [全网最详细SpringBoot、SpringCloud整合阿里云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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值