图片上传压缩java_【java基础】压缩图片上传

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值