使用对象存储OSS上传文件到阿里云

1、注册阿里云,搜索找到对象存储OSS,创建Bucket,记住Bucket名称

1、搜索对象存储OSS
在这里插入图片描述
2、创建Bucket
在这里插入图片描述

2、点击Access Key获取到AccessKey ID和AccessKey Secret

在这里插入图片描述

3、点击查看Bucket列表获取地域节点

在这里插入图片描述

4、idea中引入相关依赖

<dependencies>
    <!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>

    <!-- 日期工具栏依赖 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

<properties>
	<aliyun.oss.version>2.8.3</aliyun.oss.version>
	<jodatime.version>2.10.1</jodatime.version>
</properties>

5、具体代码

//ConstantPropertiesUtils.END_POINT    为上述获取的endpoint 
//ConstantPropertiesUtils.ACCESS_KEY_ID;为上述获取的KeyId
//ConstantPropertiesUtils.ACCESS_KEY_SECRET;为上述获取的KeySecret 
//ConstantPropertiesUtils.BUCKET_NAME;为上述获取的bucketName 
public String uploadFileAvatar(MultipartFile file) {//MultipartFile 用来获取上传文件
    // Endpoint以杭州为例,其它Region请按实际情况填写。
    String endpoint = ConstantPropertiesUtils.END_POINT;
    // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
    String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
    String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
    String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
    OSS ossClient = null;
    try {
        // 创建OSSClient实例。
        ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 获取上传文件流。
        InputStream inputStream = file.getInputStream();
        //获取文件名
        String originalFilename = file.getOriginalFilename();


        //在文件名称中拼接唯一的值,避免文件重名
        String uuid = UUID.randomUUID().toString().replaceAll("-","");
        originalFilename = originalFilename+uuid;

        //文件按照日期分类
        //获取当前日期
        String s = new DateTime().toString("yyyy/MM/dd");
        originalFilename = s+"/"+originalFilename;

        //调用方法上传文件//1.bucket名称   2.文件名称    3.文件输入流
        ossClient.putObject(bucketName, originalFilename, inputStream);
        ossClient.shutdown();
        
        //把上传到阿里云的路径拼接
        String url ="https://"+bucketName+"."+endpoint+"/"+originalFilename;
        return url;
    } catch (Exception e) {
        e.printStackTrace();
    }

    // 关闭OSSClient。
    return null;
}

可以写一个controller,然后进行测试,拿到的URL地址可以在浏览器直接下载查看

猜你喜欢

转载自blog.csdn.net/fighting32/article/details/107126541