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

news2024/9/23 1:29:39

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

  • 一、申请Bucket
  • 二、 获取AccessKey ID、AccessKey Secret
  • 三、 springboot整合
    • 3.1 在application.yml 配置参数
    • 3.2 oss需要的pom
    • 3.3 配置 oss配置类
    • 3.4 oss的controller类
    • 3.5 oss的service类以及impl

一、申请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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

18 二叉树

文章目录1 为什么需要树这种数据结构2 树示意图3 二叉树的概念4 二叉树的遍历5 二叉树的遍历的代码实现6 二叉树的遍历查找的代码实现1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点&#xff1a;通过下标方式访问元素&#xff0c;速度快。对于有序数组&#xff0c;还…

【Linux】进程状态

文章目录1. 阻塞1. 举例2. 为什么要阻塞&#xff1f;3.操作系统层面上如何理解进程等待某种资源就绪呢&#xff1f;资源进程4. 总结2.挂起3.Linux进程状态1. R状态进程只要是R状态&#xff0c;就一定是在CPU运行吗&#xff1f;证明当前进程运行状态生成程序查看进程2. S休眠状态…

New和Malloc的使用及其差异

1&#xff0c;new的使用关于new的定义&#xff1a;new其实就是告诉计算机开辟一段新的空间&#xff0c;但是和一般的声明不同的是&#xff0c;new开辟的空间在堆上&#xff0c;而一般声明的变量存放在栈上。通常来说&#xff0c;当在局部函数中new出一段新的空间&#xff0c;该…

Go项目(三)

文章目录用户微服务表结构查表web 服务跨域问题图形验证码短信用户注册服务中心注册 grpc 服务动态获取端口负载均衡配置中心启动项目小结用户微服务 作为系统的第一个微服务&#xff0c;开发的技术点前面已经了解了一遍&#xff0c;虽有待补充&#xff0c;但急需实战这里主要…

pytorch离线快速安装

1.pytorch官网查看cuda版本对应的torch和torchvisionde 版本(ncvv -V&#xff0c;nvidia-sim查看cuda对应的版本) 2.离线下载对应版本&#xff0c;网址https://download.pytorch.org/whl/torch_stable.html 我下载的&#xff1a; cu113/torch-1.12.0%2Bcu113-cp37-cp37m-win_…

基于python的一款数据处理工具pandas

在python处理数据的时候&#xff0c;都免不了用pandas做数据处理。在数据处理时&#xff0c;都免不了用数据筛选来提取自己想要的数据&#xff0c;咱们今天就讲讲pandas的条件筛选。安装库建议做数据分析的酱友们安装anaconda3&#xff0c;这个包几乎包括了数据分析用的所需要的…

【博客623】Prometheus一条告警的触发流程与等待时间

Prometheus一条告警的触发流程与等待时间 1、与告警等待时间相关的参数 prometheus.yml global:# 数据采集间隔scrape_interval: 15s # 评估告警周期evaluation_interval: 15s # 数据采集超时时间默认10s# scrape_timeoutalertmanager.yml # route标记&#xff1a;告警…

Python urllib

Python urllib Python urllib 库用于操作网页 URL&#xff0c;并对网页的内容进行抓取处理。 本文主要介绍 Python3 的 urllib。 urllib 包 包含以下几个模块&#xff1a; urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse …

剑指Offer专项突击版题解八

71.按权重生成随机数 思考&#xff1a;说到平均的生成随机数&#xff0c;想到了水塘抽样法和彩票调度法。 水塘抽样算法适合于样本不确定&#xff0c;乃至于是变化的&#xff0c;每个样本的概率是一样的。 // 样本nums[],每个元素的被抽到的概率是一样的 index : 0 for i : 1;…

Kubernetes03:kubernetes 功能和架构

2.1 概述 Kubernetes 是一个轻便的和可扩展的开源平台&#xff0c;用于管理容器化应用和服务。通过 Kubernetes 能够进行应用的自动化部署和扩缩容。在 Kubernetes 中&#xff0c;会将组成应用的容 器组合成一个逻辑单元以更易管理和发现。Kubernetes 积累了作为 Google 生产环…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测

时序预测 | Python实现TCN时间卷积神经网络时间序列预测 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测预测效果基本介绍环境准备模型描述程序设计学习小结参考资料预测效果 基本介绍 递归神经网络 (RNN),尤其是 LSTM,非常适合时间序列处理。 作为研究相关技术…

生成模型技术发展过程

生成模型生成模型和判别模型的差异生成模型的目标是在给定了数据集D&#xff0c;并且假设这个数据集的底层分布(underlying distribution)是Pdata&#xff0c;我们希望够近似出这个数据分布。如果我们能够学习到一个好的生成模型&#xff0c;我们就能用这个生成模型为下游任务做…

【项目立项管理】

项目立项管理 很杂&#xff0c;可以根据左边的列表查看自己不会的 。。。 立项管理主要是解决项目的组织战略符合性问题 开发所需的成本和资源属于经济可行性 承建方组织资源和项目的匹配程度 内部立项目的&#xff1a; 为项目进行资源分配&#xff0c;确定项目绩效目标&am…

字节二面:10Wqps超高流量系统,如何设计?

超高流量系统设计思路 前言 在40岁老架构师 尼恩的**读者交流群(50)**中&#xff0c;大流量、高并发的面试题是一个非常、非常高频的交流话题。最近&#xff0c;有小伙伴面试字节时&#xff0c;遇到一个面试题&#xff1a; 10Wqps超高流量系统&#xff0c;该如何设计&#xf…

湿度敏感性等级(MSL)

趁着周末得空&#xff0c;也有意愿&#xff0c;赶紧把之前一直想写的这个主题完成了。 湿度敏感性等级&#xff0c;相信大部分人还是比较陌生的。 湿度敏感性等级&#xff1a;MSL&#xff0c;Moisture sensitivity level 之所以有这个等级&#xff0c;大概是因为以下原因&a…

软考高级-信息系统管理师之进度管理(最新版)

项目进度管理 项目进度管理1概述2项目进度管理过程2.1规划进度管理1、规划项目进度管理目的2、规划进度管理:输入3、规划进度管理:输出2.2定义活动1、为了更好地规划项目2、定义活动过程就是3、定义活动:输入4、定义活动:输出2.3排列活动顺序1、排列活动顺序2、排列活动顺序:输…

19 顺序存储二叉树

文章目录1 顺序存储二叉树的概念1 顺序存储二叉树的概念 从数据存储来看&#xff0c;数组存储方式和树的存储方式可以相互转换&#xff0c;即数组可以转换成树&#xff0c;树也可以转换成数组&#xff0c;看右面的示意图。 要求: 1) 右图的二叉树的结点&#xff0c;要求以数…

Git常用命令以及如何在IDEA中使用Git

前言Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;Java类、xml文件、html页面等&#xff09;。Git在管理文件过程中会记录日志&#xff0c;方便回退到历史版本&#xff1b;Git存在分支的概念&#xff0c;一个项目可以有多个分支&…

linux014之进程和服务管理

linux中的进程管理&#xff1a; 查看进程命令&#xff1a; ps &#xff1a;查看应用级别的进程 ps -e&#xff1a; 查看系统应用级的进程 ps -ef &#xff1a;显示进程的全部信息(这个命令经常用) ps -ef|grep 关键字&#xff1a; 查看带有关键字的进程 关闭进程命令&#xff1…

win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0

win11pytorch1.7.0python3.8cuda11.0写在最前面一. 软件配备二. 创建虚拟环境2.1 创建环境名称&#xff0c;并选择‘y’2.2.进入虚拟环境三. 安装pytorch四. 安装虚拟环境下的notebook4.1 安装ipykernel&#xff0c;并选择‘y’&#xff0c;直至安装完成4.2 将环境名注册到note…