SpringBoot中添加阿里OSS服务,以文件上传为例

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


前言

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


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

一、首先开通OSS服务

在产品中搜索OSS并且开通服务
在这里插入图片描述

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

1、创建桶bucket

oss

2、密钥配置

密钥配置
创建AccessKey
密钥
记住这个id和secret
在这里插入图片描述

三、在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 域名)  # 访问地址

在此处获取域和访问地址
在这里插入图片描述

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,复制直接在浏览器中访问即可

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值