springboot整合阿里云oss文件服务器

一、申请Bucket

  1. 进入该网址对象存储oss述

  2. 创建Bucket
    在这里插入图片描述

  3. 创建信息
    在这里插入图片描述

  4. 文件设置,可以将自己上传的文件根据类型上传不同的文件夹
    在这里插入图片描述

  5. 读写权限,弄公共读即可
    在这里插入图片描述

  6. 跨域设置
    在这里插入图片描述

  7. 域名设置,根据情况也可以添加ssl证书,一般服务器配置里ssl,会自己识别到
    在这里插入图片描述

二、 获取AccessKey ID、AccessKey Secret

  1. 点击这里
    在这里插入图片描述
  2. 创建AccessKey
    在这里插入图片描述

三、 springboot整合

3.1 在application.yml 配置参数

endpoint这里,在oss管理界面问一下快捷帮助可以弹出

在这里插入图片描述

3.2 oss需要的pom

 <!--阿里云文件服务器oss-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

3.3 配置 oss配置类

package com.seven.server.config.oss;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * @Author: Jia Zhenqi
 * @Date: 2023/2/18  15:44
 * @Version 1.0
 */
@Configuration
public class OssConfig 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;
    }
}

3.4 oss的controller类

package com.seven.server.controller;

import com.seven.server.service.OssService;
import com.seven.server.util.result.RespBean;
import io.swagger.annotations.Api;
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;

/**
 * @Author: Jia Zhenqi
 * @Date: 2023/2/18  15:47
 * @Version 1.0
 */
@Api(tags = "oss图片上传接口管理")
@RestController
@RequestMapping("/api/oss")
public class OssController {
    @Autowired
    private OssService ossService;

    /**
     * 调用oss上传文件,返回url
     * @param file
     * @return
     * @throws Exception
     */
    @PostMapping("/upload")
    public RespBean uploadOssFile(MultipartFile file, String path) throws Exception{
        //获取上传文件 MultipartFile
        //返回图片在oss上的路径
        return ossService.uploadFileAvatar(file,path);
    }

}

3.5 oss的service类以及impl

service

package com.seven.server.service;

import com.seven.server.util.result.RespBean;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author: Jia Zhenqi
 * @Date: 2023/2/18  15:47
 * @Version 1.0
 */
public interface OssService {

    /**
     * 调用oss上传接口
     * @param file
     * @param path
     * @return
     * @throws Exception
     */
    public RespBean uploadFileAvatar(MultipartFile file, String path) throws Exception;
}

serviceimpl

package com.seven.server.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.seven.server.config.oss.OssConfig;
import com.seven.server.service.OssService;
import com.seven.server.util.result.RespBean;
import com.seven.server.util.uuid.Uuid;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;

/**
 * @Author: Jia Zhenqi
 * @Date: 2023/2/18  15:47
 * @Version 1.0
 */
@Service
public class OssServiceImpl implements OssService {
    /**
     * 调用oss上传接口
     * @param file
     * @param path
     * @return
     * @throws Exception
     */
    @Override
    public RespBean uploadFileAvatar(MultipartFile file, String path)  throws Exception{

        String endpoint = OssConfig.END_POINT;
        String accessKeyId = OssConfig.ACCESS_KEY_ID;
        String accessKeySecret = OssConfig.ACCESS_KEY_SECRET;
        String bucketName = OssConfig.BUCKET_NAME;
        String url = null;

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

        //获取上传文件输入流
        InputStream inputStream = file.getInputStream();
        //获取文件名称
        String fileName = file.getOriginalFilename();

        //保证文件名唯一,去掉uuid中的'-'
        String uuid = Uuid.getUUID();
        fileName = uuid + fileName;

        //拼接
        fileName = path + "/" + fileName;

        //调用oss方法上传到阿里云
        //第一个参数:Bucket名称
        //第二个参数:上传到oss文件路径和文件名称
        //第三个参数:上传文件输入流
        ossClient.putObject(bucketName, fileName, inputStream);

        //把上传后把文件url返回
        //https://xppll.oss-cn-beijing.aliyuncs.com/01.jpg
        url = "https://" + bucketName + "." + endpoint + "/" + fileName;
        //关闭OSSClient
        ossClient.shutdown();

        return RespBean.success("图片上传成功", url);
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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* [全网最详细SpringBootSpringCloud整合阿里云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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值