`
springcloud关注者
  • 浏览: 304686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
12d8ea3d-4199-3941-8a17-acd5024729b8
Spring_Cloud构...
浏览量:246651
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

之前给大家介绍了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");
	}
}

 2. 阿里云配置常量类(可以配置到数据库或者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/"; 
    
}

 3. 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";
	}

 4. 界面显示效果

 

 

 

 

 

 

 

  • 大小: 267.6 KB
  • 大小: 1.7 MB
  • 大小: 2.4 MB
  • 大小: 36.8 KB
4
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics