博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java基础】压缩图片上传
阅读量:6278 次
发布时间:2019-06-22

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

hot3.png

1、pom.xml

 

   
net.coobird
   
thumbnailator
   
0.4.8

2、代码

/**	 * 上传图片	 */	@RequestMapping(method = RequestMethod.POST, value = "upload")	public Object UploadFile(MultipartHttpServletRequest requestFile) throws IllegalStateException, IOException {		log.info("*******************进入图片上传的方法*************************");        ServletContext servletContext = WebContext.getServletContext();        // 得到文件绝对路径        String realPath = servletContext.getRealPath("/");        System.out.println("realPath:"+realPath);                InputStream is = null;        FileOutputStream fs = null;        		DataState dataState = new DataState();		HttpServletRequest request = WebContext.getServletRequest();		UserEntity user = WebContext.getUserEntity();		Iterator
itr = requestFile.getFileNames(); requestFile.setCharacterEncoding("utf-8"); MultipartFile file = requestFile.getFile(itr.next()); // 转换成File CommonsMultipartFile cf = (CommonsMultipartFile) file; DiskFileItem fi = (DiskFileItem) cf.getFileItem(); File f = fi.getStoreLocation(); String fileName = file.getOriginalFilename(); System.out.println(fileName); // 自定义的文件名称 String trueFileName = String.valueOf(System.currentTimeMillis()) + fileName; String totrueFileName = String.valueOf(System.currentTimeMillis())+1 + fileName; String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); /** 临时文件夹*/ String imgPath = "uploadImgTemp" + File.separator; String tempPath = realPath +"\\"+ imgPath; System.out.println("old-path-" + tempPath); File oldFile = new File(tempPath); if (!oldFile.exists()) { oldFile.mkdirs(); } /** 处理后文件夹*/ String newImaPath = "uploadImg" + File.separator; String newPath = realPath +"\\" + newImaPath; System.out.println("new-path-" + newPath); File newFile = new File(newPath); if (!newFile.exists()) { newFile.mkdirs(); } /** 先存取源文件*/ is = file.getInputStream(); fs = new FileOutputStream(tempPath + trueFileName); //... if (file.getSize() > 0 && file.getSize()>1048576) { byte[] buffer = new byte[1024 * 1024]; int bytesum = 0; int byteread = 0; while ((byteread = is.read(buffer)) != -1) { bytesum += byteread; fs.write(buffer, 0, byteread); fs.flush(); } fs.close(); is.close(); } /** 处理源文件 ,进行压缩再放置到新的文件夹*/ String oldPath = tempPath + trueFileName; String copyPath = newPath + totrueFileName; Thumbnails.of(oldPath).scale(0.2f).toFile(copyPath);//按比例缩小 File toFile = new File(copyPath); log.info("*******************上传图片大小:"+toFile.length()+"*************************"); //ftp上传 String filePath = Common.getValue("FTP_REMOTE_FILEPATH", "com.ztb.common.util.properties.ftp") + time; boolean result = FtpUtil.upload(new File(copyPath), filePath, totrueFileName); if (result == false) { dataState.setStateCode(StateCode.OPT_ERROR); dataState.setData(""); return DataEvent.wrap("uploadok", dataState); } String url = Common.getValue("RETURN_URL", "com.ztb.common.util.properties.ftp") + time + "/" + totrueFileName; WebContext.getSession().setAttribute("url", url); dataState.setStateCode(StateCode.OPT_OK); dataState.setData(url); return DataEvent.wrap("uploadok", dataState); }

 

转载于:https://my.oschina.net/maojindaoGG/blog/1618541

你可能感兴趣的文章
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
vim使用点滴
查看>>