2025年阿里云OSS的开通(保姆级)与配置及Java项目集成实战

提示:本文详细讲解了阿里云OSS的开通流程、配置方法以及在Java项目中的集成与使用。通过本文,你将掌握如何快速上手阿里云OSS,并在实际项目中实现文件的高效存储与管理。


前言

提示:本文详细讲解了阿里云OSS的开通流程、配置方法以及在Java项目中的集成与使用。通过本文,你将掌握如何快速上手阿里云OSS,并在实际项目中实现文件的高效存储与管理。

        在当今的互联网应用开发中,文件存储是一个至关重要的环节。阿里云对象存储OSS(Object Storage Service)凭借其高效、安全、可靠的特性,成为了众多开发者首选的存储解决方案。本文将带你一起探索阿里云OSS的开通、配置以及在Java项目中的应用。


一、阿里云OSS的注册与开通

  1. 进入阿里云官网:打开浏览器,输入网址:https://www.aliyun.com,进入阿里云官方网站。

  2. 登录账号:如果你已有阿里云账号,直接输入账号和密码登录;若没有,需先注册一个账号。

  3. 找到对象存储OSS:在官网导航栏中点击“产品”,在下拉菜单中找到“存储与CDN”,点击“对象存储OSS”。

  4. 立即开通:进入OSS产品页面,点击“立即开通”。新用户可选择免费试用,根据自身需求进行操作。

  5. 同意协议:点击使用后会弹出提示框,仔细阅读并同意相关协议,即可完成开通。新用户有试用期3个月

二、阿里云OSS的基本计费规则

点击使用后会弹出提示框,同意即可,试用的朋友可能需要认证

  • 开通OSS服务以及创建Bucket操作是不收费的。

  • 当你在Bucket中上传文件时,文件的存储空间是需要付费的,按实际使用量计费。

  • 上传文件到Bucket产生的流量不收费。

  • 若通过外网下载Bucket中的文件,外网出流量是需要付费的。

  • 开通OSS传输加速功能不收费,但如果在传输过程中使用了加速功能,产生的传输加速流量是需要付费的。

三、OSS管理控制台的进入方式

开通服务后,有以下两种方式进入OSS管理控制台:

  1. 在OSS产品详情页面直接点击“管理控制台”,即可进入OSS管理控制台界面。

  2. 点击官网首页右上方菜单栏的“控制台”,进入阿里云管理控制台首页,再点击左侧的“对象存储OSS”菜单,进入OSS管理控制台界面。

四、存储空间(Bucket)的创建与配置

  1. 进入Bucket列表:在OSS管理控制台界面,点击左上角的栏目找到“Bucket列表”。

  2. 创建新的Bucket:点击“创建Bucket”,进入创建存储空间的页面。

  3. 配置存储空间信息:填写Bucket名称(需唯一且符合命名规则)、选择地域(根据用户访问量和数据存储需求选择合适的地域)、设置存储类型(如标准存储、低频访问存储等)、权限设置(可选择公共读写、公共只读或私有)等信息。

  4. 完成创建:点击“确定”完成Bucket的创建。

  5. 权限修改:为了方便后续项目访问,可根据需求对Bucket的权限进行调整。

五、文件的上传与管理

  1. 进入创建好的Bucket:在Bucket列表中点击刚创建的Bucket,进入其管理界面。

  2. 上传文件:点击“上传”,选择要上传的文件,可单个或批量上传。

  3. 查看文件信息:上传完成后,可在Bucket中看到上传的文件列表,点击文件可查看详细信息,包括文件名、大小、最后修改时间、存储路径等。

  4. 获取文件URL:点击文件的“图片详情信息”,可获取文件的访问URL,用于后续在项目中引用。

六、创建AccessKey

  1. 进入安全设置:登录阿里云账号,点击头像进入账号管理页面,找到“访问控制”选项。

  2. 创建AccessKey:在“访问控制”页面,找到“访问密钥”板块,点击“创建访问密钥”。

  3. 安全验证:勾选安全风险提示,点击“继续”,然后进行账号检查验证(可选择短信验证或密钥验证等方式)。

  4. 保存AccessKey:创建成功后,会显示AccessKey ID和AccessKey Secret,这是你的敏感信息,务必妥善保存,防止泄露。

七、Java项目中集成阿里云OSS

1. 添加依赖

在项目的pom.xml文件中添加阿里云OSS SDK依赖:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.13.0</version>
</dependency>
2. 配置文件设置

在项目的application.yml或application.properties文件中添加阿里云OSS的相关配置:

sky:
  alioss:
    endpoint: oss-cn-beijing.aliyuncs.com  # 根据实际创建的地域填写
    access-key-id: your-access-key-id      # 替换为你的AccessKey ID
    access-key-secret: your-access-key-secret  # 替换为你的AccessKey Secret
    bucket-name: your-bucket-name          # 替换为你的Bucket名称
spring:
  profiles:
    active: dev    #设置环境
sky:
  alioss:
    endpoint: oss-cn-hangzhou.aliyuncs.com
    access-key-id: LTAI5tPeFLzsPPT8gG3LPW64
    access-key-secret: U6k1brOZ8gaOIXv3nXbulGTUzy6Pd7
    bucket-name: sky-take-out


3. 创建配置类

创建AliOssProperties类,用于读取配置文件中的阿里云OSS相关属性:

package com.sky.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "sky.alioss")
@Data
public class AliOssProperties {

    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;
}
4. 创建工具类

创建AliOssUtil类,用于实现文件上传等功能:

package com.sky.utils;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.io.ByteArrayInputStream;

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {

    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;

    /**
     * 文件上传
     *
     * @param bytes 文件字节数组
     * @param objectName 文件在OSS中的存储名称
     * @return 文件访问URL
     */
    public String upload(byte[] bytes, String objectName) {

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

        try {
            // 创建PutObject请求。
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));
        } 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();
            }
        }

        //构建文件访问路径
        StringBuilder stringBuilder = new StringBuilder("https://");
        stringBuilder
                .append(bucketName)
                .append(".")
                .append(endpoint)
                .append("/")
                .append(objectName);

        log.info("文件上传到:{}", stringBuilder.toString());

        return stringBuilder.toString();
    }
}
5. 创建配置类

创建OssConfiguration类,用于创建AliOssUtil Bean:

package com.sky.config;

import com.sky.properties.AliOssProperties;
import com.sky.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类,用于创建AliOSSUtil
 */
@Configuration
@Slf4j
public class OssConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties) {
        log.info("开始创建阿里云文件上传工具类:{}", aliOssProperties);
        return new AliOssUtil(aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());
    }
}
 6.定义接口
package com.sky.controller.admin;

import com.sky.constant.MessageConstant;
import com.sky.result.Result;
import com.sky.utils.AliOssUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;

/**
 * 通用接口:其它模块也可能用到文件上传
 */
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j
public class CommonController {

    @Autowired
    private AliOssUtil aliOssUtil;

    /**
     * 文件上传
     * @param file
     * @return
     */
    @PostMapping("/upload")
    @ApiOperation("文件上传")
    /**
     * 为什么泛型指定为String类型???
     * 由接口文档可知,返回的Result中data属性值是 文件上传到阿里云后的url地址  类型为String类型
     *
     * 通过MultipartFile 类型来接收上传的文件,要求方法的形参名和表单项的name属性的值/前端提交的参数名(
     * 由接口文档可知参数名为file)一致,如果不一致使用@requesrparam注解进行参数绑定
     */
    public Result<String> upload(MultipartFile file){
        log.info("文件上传:{}",file);

        try {
            //原始文件名
            String originalFilename = file.getOriginalFilename();
            //截取原始文件名的后缀   dfdfdf.png
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
            //构造新文件名称:防止上传到阿里云的文件,因为名字重复导致覆盖的问题
            String objectName = UUID.randomUUID().toString() + extension;

            //文件的请求路径
            //参数:  byte数组,文件对象转成的数组     传上去的图片在阿里云存储空间里面的名字
            String filePath = aliOssUtil.upload(file.getBytes(), objectName);
            return Result.success(filePath);
        } catch (IOException e) {
            log.error("文件上传失败:{}", e);
        }

        return Result.error(MessageConstant.UPLOAD_FAILED);
    }
}

总结

        本文详细学习了阿里云OSS的开通流程、配置方法以及在Java项目中的集成与使用。从注册账号、开通服务,到创建存储空间、上传文件,再到获取AccessKey并在Java项目中进行相关配置和代码实现,每一步都进行了清晰的讲解。在实际项目开发中,合理利用阿里云OSS能够有效解决文件存储问题,提高应用的性能和可靠性。希望本文能为你的开发工作提供有价值的参考,帮助你更好地运用阿里云OSS进行文件存储与管理。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值