SpringBoot集成阿里云OSS服务实现文件图片上传访问

提示:这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取!

在项目中不管是上传文件还是图片,我们一般会选择上传到服务器,那么当我们想访问上传的文件或图片时,需要搭建WEB服务器对文件或图片进行映射,才能被外界访问,这时会产生两个问题,一是肯定会增加对服务器的访问请求,二是肯定会占用服务器的存储,其实除了存储在我们的服务器上这个方案外,还可以上传到可靠的第三方平台,我最近使用了阿里的OSS服务,感觉挺好使,所以在这里总结一下,并推荐给大家,有两个优点,一是提供各种语言的SDK,所以集成起来特别方便,二是阿里目前是国内的技术龙头,企业或者个人服务器很多都是使用阿里云服务器,所以在稳定性和安全性上毫无置疑,这样可以将一些文件图片的访问转移到阿里提供的OSS服务,一举两得,但是毕竟是用人家的服务,虽然有免费存储空间,但是有限,如果小体量的话,应该够用,大体量,我觉着也不差这点钱了,哈哈,下面我就一步一步介绍一下,如何将阿里的OSS服务集成到我们的SpringBoot项目中

  1. 首先肯定是登录阿里云了,现在都需要实名认证,可以通过支付宝登录,支付宝大家应该都有,而且信息互通,所以一登录就相当于实名认证了
    SpringBoot集成阿里云OSS服务实现文件图片上传访问_第1张图片

  2. 登录进去,我们找到OSS服务,点击进去
    SpringBoot集成阿里云OSS服务实现文件图片上传访问_第2张图片

  3. 然后点击右侧,创建一个Bucket,就像一个存储空间
    SpringBoot集成阿里云OSS服务实现文件图片上传访问_第3张图片

  4. 然后填写Bucket内容,主要填写名称和选择地域,还有一个读写权限,如果是一些公共都可以访问的图片或文件,就直接选择公共读
    SpringBoot集成阿里云OSS服务实现文件图片上传访问_第4张图片

  5. 创建之后,就可以在Bucket列表看到了
    SpringBoot集成阿里云OSS服务实现文件图片上传访问_第5张图片

  6. 下面我们就来集成到我们的SpringBoot项目里面,首先创建一个SpringBoot项目,这个过程就不列举了,大家应该都会,讲一下重点内容
    一、引入Maven依赖

<dependency>
	<groupId>com.aliyun.ossgroupId>
	<artifactId>aliyun-sdk-ossartifactId>
	<version>3.1.0version>
dependency>

二、下面看一下主要的java代码,很少,很容易集成
//application.properties的配置信息,这些信息去阿里云网站查找
#阿里云OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=
SpringBoot集成阿里云OSS服务实现文件图片上传访问_第6张图片
#创建一个Access Key,找下图创建
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
SpringBoot集成阿里云OSS服务实现文件图片上传访问_第7张图片
#创建Bucket时的名称
aliyun.oss.file.bucketname=

//常量类,读取application.properties内容
@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_POINT;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
     
        END_POINT = endpoint;
        ACCESS_KEY_ID = keyId;
        ACCESS_KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}
//service实现类
@Service
public class OssServiceImpl implements OssService {
     

    //上传头像到OSS
    @Override
    public String uploadFileAvatar(MultipartFile file) {
     
        String endpoint = ConstantPropertiesUtils.END_POINT;
        String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
        String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
        String bucketName = ConstantPropertiesUtils.BUCKET_NAME;

        try{
     

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

            //获取上传文件输入流
            InputStream inputStream = file.getInputStream();

            //获取文件名称
            String fileName = file.getOriginalFilename();

            //在文件名称里面添加随机唯一的值
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            fileName = uuid + fileName;

            //获取当前日期
            String datePath = new DateTime().toString("yyyy/MM/dd");

            fileName = datePath + "/" + fileName;

            ossClient.putObject(bucketName, fileName, inputStream);

            //关闭OSSClient
            ossClient.shutdown();

            //把上传之后文件路径返回
            String url = "https://" + bucketName + "." + endpoint + "/" + fileName;
            return url;




        }catch (Exception e){
     
            e.printStackTrace();
            return null;
        }

    }
}

这样基本就完成了集成阿里OSS服务,是不是很简单,大家可以试试!

下面是我集成后,上传图片成功后,返回的url,可以观察一下url

https://edu-lzy0707.oss-cn-beijing.aliyuncs.com/2021/05/26/06ff3d3ae9664fac909ec26857f65ddafile.png

你可能感兴趣的:(spring,boot,JAVA,后端系列,java,spring)