Spring mvc+oss存储+fileupload多文件上传实现SSO单点登录模板管理

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: springboot、springcloud、fileupload

之前给大家介绍了sso的相关知识点和集成方案,考虑到每个系统所属行业的不同,这边针对于不同行业做了一些统一的sso单点登录界面模板,使用fileupload多文件上传+OSS阿里云存储方案。

  1. 阿里云oss存储Utils
public class AliyunUtils {  
      
    private static AliyunUtils aliyun;  
    private AliyunUtils() {  
          
    }  
  
    public static synchronized AliyunUtils getInstance(){  
        if(aliyun==null){  
            aliyun=new AliyunUtils();  
        }  
        return aliyun;  
    }  
      
    /** 
     * 上传byte数组 
     * @param fileByte 
     * @param fileKey  
     */  
    public void uploadByte(byte[] fileByte, String fileKey){  
        // 创建OSSClient实例  
        OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET);  
        // 上传byte数组  
        ossClient.putObject(CloudConstant.BUCKET, fileKey, new ByteArrayInputStream(fileByte));  
        // 关闭client  
        ossClient.shutdown();  
    }  
      
    /** 
     * 上传文件流 
     * @param inputStream 
     * @param fileKey 
     */  
    public void uploadInputStream(InputStream inputStream, String fileKey){  
        // 创建OSSClient实例  
        OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET);  
        // 上传文件流  
        ossClient.putObject(CloudConstant.BUCKET, fileKey, inputStream);  
        // 关闭client  
        ossClient.shutdown();  
    }  
      
    /** 
     * 删除文件 
     * @param fileKey 
     */  
    public void deleteFile(String fileKey){  
        // 创建OSSClient实例  
        OSSClient ossClient = new OSSClient(CloudConstant.ENDPOINT, CloudConstant.ACCESSKEYID, CloudConstant.ACCESSKEYSECRET);  
        // 删除文件  
        ossClient.deleteObject(CloudConstant.BUCKET, fileKey);  
        // 关闭client  
        ossClient.shutdown();  
    }  
      
    //base64字符串转化成图片    
    @SuppressWarnings("restriction")  
    public static byte[] BASE64DecoderStringToByte(String imgStr)    
    {   //对字节数组字符串进行Base64解码并生成图片    
        if (imgStr == null) //图像数据为空    
            return null;    
        sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();    
        try {    
            //Base64解码    
            byte[] b = decoder.decodeBuffer(imgStr);    
           return b;  
        } catch (Exception e){    
            return null;    
        }    
    }  
      
    public static void main(String[] args) {  
        //AliyunUtils.getInstance().uploadByte(BASE64DecoderStringToByte(base64), "aabb.jpg");  
    }  
}  
  1. 阿里云配置常量类(可以配置到数据库或者properties,后面会更新配置方式)
public class CloudConstant {  
      
    /****************阿里云OSS上传文件配置****************/  
    public static final String ENDPOINT = "http://oss-cn-shanghai.aliyuncs.com"; //外网访问域名  
    //public static final String ENDPOINT = "http://oss-cn-shanghai-internal.aliyuncs.com"; //内网访问域名  
    public static final String ACCESSKEYID = "12345678qwertyu; //标识用户  
    public static final String ACCESSKEYSECRET = "1234567890WERTYUIO"; //加密签名字符  
    public static final String BUCKET = "huiyi-bucket"; //存储空间  
      
    /****************背景文件路径配置****************/  
    public static final String BACK_IMG_INFO_PATH = "sso/backageImg/";   
      
}  
  1. sso templateController类
public String save(SsoTemplate ssoTemplate, Model model, RedirectAttributes redirectAttributes, @RequestParam(value = "file", required = false) MultipartFile file) {  
        if (!beanValidator(model, ssoTemplate)) {  
            return form(ssoTemplate, model);  
        }  
  
        String fileName = String.valueOf(new Date().getTime());  
        String staff = "";  
        String fileKey = "";  
        // 上传文件  
        if (file.getSize() != 0) {  
            staff = FilenameUtils.getExtension(file.getOriginalFilename());  
            fileKey = CloudConstant.BACK_IMG_INFO_PATH + fileName + "." + staff;  
            // 删除OSS文件  
            AliyunUtils.getInstance().deleteFile(fileKey);  
            // 上传文件至阿里云OSS  
            try {  
                AliyunUtils.getInstance().uploadInputStream(file.getInputStream(), fileKey);  
                ssoTemplate.setImg(fileKey);  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
          
        ssoTemplateService.save(ssoTemplate);  
        addMessage(redirectAttributes, "保存模板成功");  
        return "redirect:" + Global.getAdminPath() + "/sso/ssoTemplate";  
    }  
  1. 界面显示效果
    image.png

image.png
image.png
image.png
(企业架构源码可以加求球:3536247259)

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
1月前
|
JSON 前端开发 Java
解决Spring MVC中No converter found for return value of type异常
在Spring MVC开发中遇到`No converter found for return value of type`异常,通常是因缺少消息转换器、返回值类型不支持或转换器优先级配置错误。解决方案包括:1) 添加对应的消息转换器,如`MappingJackson2HttpMessageConverter`;2) 自定义消息转换器并实现`HttpMessageConverter`接口,设置优先级;3) 修改返回值类型为如`ResponseEntity`的合适类型。通过这些方法可确保返回值正确转换为响应内容。
39 1
|
3天前
|
前端开发 Java 应用服务中间件
Spring MVC框架概述
Spring MVC 是一个基于Java的轻量级Web框架,采用MVC设计模型实现请求驱动的松耦合应用开发。框架包括DispatcherServlet、HandlerMapping、Handler、HandlerAdapter、ViewResolver核心组件。DispatcherServlet协调这些组件处理HTTP请求和响应,Controller处理业务逻辑,Model封装数据,View负责渲染。通过注解@Controller、@RequestMapping等简化开发,支持RESTful请求。Spring MVC具有清晰的角色分配、Spring框架集成、多种视图技术支持以及异常处理等优点。
11 1
|
11天前
|
存储 SQL 关系型数据库
存储系统、数据库和对象存储 | 青训营
存储系统、数据库和对象存储 | 青训营
|
16天前
|
存储 Java 程序员
Spring简单的存储和读取
Spring简单的存储和读取
27 5
|
25天前
|
存储 安全 API
对象存储OSS产品常见问题之附件上传后存储存在被窃取的风险如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
25 0
|
29天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
23 3
|
29天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
14 1
|
29天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
33 3
|
29天前
|
前端开发 Java 容器
家族传承:Spring MVC中父子容器的搭建与管理指南
家族传承:Spring MVC中父子容器的搭建与管理指南
26 3
|
29天前
|
前端开发 Java API
头头是道:揭示Spring MVC如何获取和处理请求头数据
头头是道:揭示Spring MVC如何获取和处理请求头数据
26 1