博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云图片压缩上传代码
阅读量:6325 次
发布时间:2019-06-22

本文共 3995 字,大约阅读时间需要 13 分钟。

1.页面端

2.控制器

@RequestMapping(value="upload",method=RequestMethod.POST)    public String upload(DefaultMultipartHttpServletRequest multipartRequest,@RequestParam int memNo, @RequestParam int flag,@RequestParam int authSt, HttpServletResponse response){        if (multipartRequest != null) {              memberService.uploadMemPic(multipartRequest,memNo, flag,authSt);        }          //uploadService.json_encode(response, list);          //return "redirect:/pic/upload/"+carNo;        return "redirect:/mem/detail/"+memNo;    }

3.Service层方法

/**     *      * @param multipartRequest     * @param memNo     * @param picKey     * @param flag 1::本人照片,3:身份证正面照,4:身份证背面,5:驾照照片     * @param authSt 0:未上传     */    public void uploadMemPic(DefaultMultipartHttpServletRequest multipartRequest, int memNo, int flag, int authSt) {        Map
map = new HashMap
(); map.put("memNo", memNo); map.put("flag", flag); Map
memPath = memberMapper.getMemBasePath(map); String basePath = (String)memPath.get("basePath"); String oldPicKey = (String)memPath.get("picKey"); if(authSt != 0 && StringUtils.hasText(oldPicKey)){ OSSUtils.deleteOSSObjectAuth(oldPicKey);//删除之前的图片 } MultipartFile multifile = multipartRequest.getFile("authFile"); String picName = multifile.getOriginalFilename(); String extName = picName.substring(picName.lastIndexOf(".")); String newPicName = FILE_NAME_MAPING.get(flag) + extName; String picKey = "mem/" + basePath + newPicName; map.put("picKey", picKey); memberMapper.updateAuth(map);//更新数据库表 try { // OSSUtils.uploadInputStreamAuth(picKey, multifile); //压缩身份证和驾照图片, 140918 InputStream input = null; input = multifile.getInputStream(); //Image image = ImageIO.read(input); BufferedImage bufImg = ImageIO.read(input);//把图片读入到内存中

        //压缩代码

        bufImg = Thumbnails.of(bufImg).size(bufImg.getWidth(), bufImg.getHeight()).outputQuality(0.9).asBufferedImage();

OSSUtils.uploadInputStreamAuth(picKey, bufImg);                    } catch (Exception e) {            logger.error("",e);        }    }

4.OSSUtils工具类

public static boolean uploadInputStreamAuth(String key, BufferedImage image) throws Exception{        boolean errorCode = false;        ObjectMetadata objectMeta = new ObjectMetadata();        objectMeta.setContentType("image/*");//在metadata中标记文件类型        //        InputStream input = multifile.getInputStream();//        InputStream inputTmp = multifile.getInputStream();                //--------------------        //转成inputStream        ByteArrayOutputStream bos = new ByteArrayOutputStream();//存储图片文件byte数组        ImageOutputStream ios = ImageIO.createImageOutputStream(bos);         ImageIO.write(image, "jpg", ios); //图片写入到 ImageOutputStream                InputStream input = new ByteArrayInputStream(bos.toByteArray());        InputStream inputTmp = new ByteArrayInputStream(bos.toByteArray());        //--------------------                try {            objectMeta.setContentLength(input.available());            //校验文件MD5值            PutObjectResult    res = client.putObject(BUCKET_AUTH, key, input, objectMeta);            String checkMD5 = res.getETag();            String verifyCode = getFileInputStreamMD5(inputTmp);            if(verifyCode.equalsIgnoreCase(checkMD5) == true){                logger.info("文件上传成功:{}",key);                errorCode = true;            }else{                logger.error("文件上传失败:{}",key);            }        } catch (Exception e) {            logger.error("",e);        }finally{            if(inputTmp != null){                inputTmp.close();            }        }        return errorCode;    }

 

转载地址:http://dbgaa.baihongyu.com/

你可能感兴趣的文章
UIAlertController简单使用
查看>>
二分查找中的对半查找和采用斐波那契法查找的效率分析(信息论描述)
查看>>
我对git的认识
查看>>
BZOJ2425:[HAOI2010]计数(数位DP)
查看>>
CLR读书笔记--第四章 类型基础
查看>>
CSS3实战开发 表单发光特效实战开发
查看>>
初识Ajax---简单的Ajax应用实例
查看>>
js 去除字符串空白符
查看>>
201521123026《JAVA程序设计》第13周学习总结
查看>>
【SICP练习】82 练习2.54
查看>>
[APUE]标准IO库(下)
查看>>
saltstack自动化运维系列③之saltstack的常用模块使用
查看>>
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句...
查看>>
工控安全资料
查看>>
修改linux最大文件句柄数
查看>>
网络编程---tcp/udp协议
查看>>
jmeter3.2 版本完美实现Load Test报表
查看>>
再看python多线程------threading模块
查看>>
R 从零开始,简单API集合
查看>>
学习react系列(八)—— mixins迁移
查看>>