美文网首页
Spring mvc+oss存储+fileupload多文件上传

Spring mvc+oss存储+fileupload多文件上传

作者: 黑骑士1203 | 来源:发表于2020-11-12 17:02 被阅读0次

    之前给大家介绍了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. 界面显示效果

    相关文章

      网友评论

          本文标题:Spring mvc+oss存储+fileupload多文件上传

          本文链接:https://www.haomeiwen.com/subject/rtppbktx.html