提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 前言
  • 一、首先开通OSS服务
  • 二、OSS的桶bucket的创建和密钥配置
  • 1、创建桶bucket
  • 2、密钥配置
  • 三、在springboot中的配置
  • 1、在pom文件中导入坐标
  • 2、application.yml 配置
  • 3、在config包中编写工具类
  • 4、使用
  • 总结



前言

在springboot项目中,有时候需要上传保存一些图片,并且能够直接访问阿里上的图片,这就可以使用阿里的OSS服务了,前提是需要在阿里官网中开通OSS服务,在这里介绍怎样在springboot项目中使用基本的OSS服务。


提示:以下是本篇文章正文内容,下面案例可供参考

一、首先开通OSS服务

在产品中搜索OSS并且开通服务

spring oss spring oss支持_阿里云

二、OSS的桶bucket的创建和密钥配置

1、创建桶bucket

spring oss spring oss支持_spring_02

2、密钥配置

spring oss spring oss支持_spring_03


创建AccessKey

spring oss spring oss支持_java_04


记住这个id和secret

spring oss spring oss支持_阿里云_05

三、在springboot中的配置

1、在pom文件中导入坐标

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

2、application.yml 配置

代码如下(示例):

# 阿里配置
al:
  oss: #存储
    endpoint: oss-cn-guangzhou.aliyuncs.com   # 域
    accessKeyId: LTAIxxx   # 秘钥KeyId
    accessKeySecret: LTAIxxx # 秘钥KeySecret
    bucketName: xxxx  # 桶名
    url: https://xxx(Bucket 域名)  # 访问地址

在此处获取域和访问地址

spring oss spring oss支持_spring boot_06

3、在config包中编写工具类

代码如下(OssConfig):

//oss存储配置
@Configuration
@ConfigurationProperties("al.oss")
@Data
public class OssConfig {
    //区域
    private String endpoint;
    //访问id
    private String accessKeyId;
    //访问秘钥
    private String accessKeySecret;
    //桶名称
    private String bucketName;
    //访问URL
    private String url;
}

代码如下(OssTemplate):

//阿里存储工具类
@Component
public class OssTemplate {

    @Autowired
    private OssConfig ossConfig;

    //文件上传
    public String upload(String fileName, InputStream inputStream) {
        // 创建OSSClient
        OSS ossClient = new OSSClientBuilder().build(
                ossConfig.getEndpoint(),
                ossConfig.getAccessKeyId(),
                ossConfig.getAccessKeySecret());

        // 上传文件流
        // <yourObjectName>表示上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如 images/2020/11/11/asdf.jpg。
        String objectName = "images/" + new SimpleDateFormat("yyyy/MM/dd").format(new Date())
                + "/" + System.currentTimeMillis() + fileName.substring(fileName.lastIndexOf("."));

        // meta设置请求头,解决访问图片地址直接下载
        ObjectMetadata meta = new ObjectMetadata();
        meta.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));
        ossClient.putObject(ossConfig.getBucketName(), objectName, inputStream, meta);

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

        return ossConfig.getUrl() + "/" + objectName;
    }

    //获取文件类型
    public String getContentType(String FilenameExtension) {
        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
            return "image/bmp";
        }
        if (FilenameExtension.equalsIgnoreCase(".gif")) {
            return "image/gif";
        }
        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
                FilenameExtension.equalsIgnoreCase(".jpg") ||
                FilenameExtension.equalsIgnoreCase(".png")) {
            return "image/jpg";
        }
        return "image/jpg";
    }
}

4、使用

@RestController
public class UploadController {
    @Autowired
    private OssTemplate ossTemplate;
    /**
     * 文件上传
     * /admin/upload/image
     * @param uploadImage
     * @return
     * @throws IOException
     */
    @RequestMapping("/admin/upload/image")
//    @ResponseBody
    public String ImageUpload(MultipartFile uploadImage) throws IOException {

        String upload = this.ossTemplate.upload(uploadImage.getOriginalFilename(), uploadImage.getInputStream());

        return upload;
    }
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了OSS文件上传的的使用,而OSS还提供了大量能使我们快速便捷地处理数据的服务。
若要访问上传的图片,可以在对应的Bucket中,选择文件管理->文件列表,找到需要访问的图片,点击详情,会出现一个URL,复制直接在浏览器中访问即可