spring boot上传阿里云对象存储OSS快速上手(二、代码实现,复制粘贴可用)

OSS简介请看上一篇
spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)


通过代码实现上传阿里云oss首先需要AccessKey,首次使用需要创建AccessKey

阿里云OSS控制台下点击右上角头像进入AccessKey 管理

在这里插入图片描述
在这里插入图片描述
首次使用创建Access Key

在这里插入图片描述
导入pom坐标


            <!--aliyunOSS-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

            <!--日期时间工具-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version> 2.10.1</version>
        </dependency>

application.properties, 通过配置文件读取参数,也可以直接将参数写入方法里面。

#服务端口
server.port=8003


#环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 OSS
#地域节点参数
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
#自己的AccessKey id和密钥参数
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
#bucket参数 可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=oss-demo-zyw

地域节点参数:
在这里插入图片描述
读取配置文件里的那四个参数

//当项目已启动,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_POIND;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        END_POIND = endpoint;
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

service业务代码

接口:

public interface OssService {


    String uploadFileAvatar(MultipartFile file) throws IOException;
}

实现类:

@Service
public class OssServiceImpl implements OssService {


    @Override
    public String uploadFileAvatar(MultipartFile file) throws IOException {
    	//从全局工具类读取参数
        // Endpoint请按实际情况填写。
        String endpoint = ConstantPropertiesUtils.END_POIND;
		// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        
        String bucketName=ConstantPropertiesUtils.BUCKET_NAME;

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 上传文件流。
        InputStream inputStream = null;

        inputStream = file.getInputStream();

        //获取上传文件名,包含后缀
        String originalFilename = file.getOriginalFilename();
        //获取后缀
        String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
        //生成唯一uuid值并且去掉里面的‘-’
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
		
        String dateTime = new DateTime().toString("yyyy/MM/dd");
        String filename=dateTime+"/"+uuid+substring;

        ossClient.putObject(bucketName,filename , inputStream);

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

        String url="https://"+bucketName+"."+endpoint+"/"+filename;


        return url;
    }
}

controller控制层

@RestController
@RequestMapping("/ossdemo")
@CrossOrigin
public class OssController {

    @Autowired
    private OssService ossService;

    @PostMapping
    public String uploadOssFile(MultipartFile file){

        String url= null;
        try {
            url = ossService.uploadFileAvatar(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return url;
    }

}

编写简单界index.html测试,将该网页放入resource/static目录下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="http://127.0.0.1:8003/ossdemo">
    <input type="file" name="file"/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

启动spring boot测试:
在这里插入图片描述
成功返回图片链接,可以直接复制链接在浏览器下载图片。

进入控制台查看上传的图片

在这里插入图片描述

别的操作详情可以进入阿里云查看官方文档操作:
https://help.aliyun.com/document_detail/32009.html

在这里插入图片描述

帮助到您请点赞关注收藏谢谢!!

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值