java 图片批量上传_java端同时获取批量上传图片及其他数据

该Java代码实现了一个批量上传图片的功能,同时在上传过程中进行数据验证,包括车辆编码、备注、故障内容等字段的校验。此外,代码还检查了图片的数量、类型和大小,确保符合规范。图片上传后,会保存到指定路径,并返回图片URL。
摘要由CSDN通过智能技术生成

@Service("troubleTicketReportImpl")public class TroubleTicketReportImpl implementsTroubleTicketReportService{

@Resource(name="troubleTicketDaoImpl")privateTroubleTicketDao troubleTicketDao;

@Resource(name="electrombileDaoImpl")privateElectrombileDao electrombileDao;private final String upload_img_root = PropertiesUtil.getStringValue("upload_root");private final String upload_img_report_dir = PropertiesUtil.getStringValue("upload_img_report_dir");private final String upload_img_report_url = PropertiesUtil.getStringValue("upload_img_report_url");//文件最大值 kb,默认1024kb

private final Integer max_img_size =PropertiesUtil.get("trouble_max_img_size", 1024);

@Overridepublic voidaddTroubleTicket(TroubleTicket ttk,MultipartFile[] images,String accessToken) {

String electrombileCode=ttk.getElectrombileCode();

ValidUtil.valid("车辆编码", electrombileCode, "{'required':true,'regex':'" + RegexConstants.NUM_10_PATTERN + "'}");

String remark=ttk.getRemark();if(remark != null && remark != ""){

ValidUtil.valid("备注", remark, "{'required':false,'regex':'" + RegexConstants.STRING_0_300_PATTERN + "'}");

}

String reportContent=ttk.getReportContent();if(reportContent != null && reportContent != ""){

ValidUtil.valid("故障内容", reportContent, "{'required':false,'regex':'" + RegexConstants.STRING_0_300_PATTERN + "'}");

}

String types=ttk.getTroubleType();if(types.isEmpty() || types ==null){throw new BizException("E1000022", MessageUtil.getMessage("E1000022","维修类型"));//维修类型不存在

}if(types.contains(",")){

String[] type= types.split(",");for(String t :type){if(null==TroubleType.contains(Integer.valueOf(t))){throw new BizException("E1000015", MessageUtil.getMessage("E1000015","维修类型"));

}

}

}else{if(null==TroubleType.contains(Integer.valueOf(types))){throw new BizException("E1000015", MessageUtil.getMessage("E1000015","维修类型"));

}

}

Electrombile electrombile= newElectrombile();

electrombile.setElectrombileCode(electrombileCode);

List elist = electrombileDao.queryListByParams(electrombile,1,10);if(elist.size() ==0 || elist == null || elist.size() > 1){throw new BizException("E1000022", MessageUtil.getMessage("E1000022","车辆信息"));//车辆信息不存在

}//查看status=0,1,2,3的数据有几条

TroubleTicket troubleTicket = newTroubleTicket();

troubleTicket.setElectrombileCode(electrombileCode);int size =troubleTicketDao.selectCountByStatus(troubleTicket);if(size > 0){throw new BizException("E1000014", MessageUtil.getMessage("E1000014","报修信息"));//报修信息存在

}

String reportPhoto= "";if(images != null && images.length!=0){

reportPhoto=saveImages(images);

}

AppUserDTO usrDto=KeyUtil.getAppUserByAccessToken(accessToken);

AppUser user=usrDto.getUserInfo();

Integer subscriberId= user.getId();//用户ID//ttk.setTicketCode(String.valueOf(System.currentTimeMillis()));//工单编号

ttk.setId(null);

ttk.setReportDate(newDate());

ttk.setReportPhoto(reportPhoto);

ttk.setSubscriberId(subscriberId);

ttk.setStatus(0);

troubleTicketDao.insertSelective(ttk);

}

@OverridepublicTroubleTicket queryByElectrombileCode(String accessToken) {

AppUserDTO usrDto=KeyUtil.getAppUserByAccessToken(accessToken);

AppUser user=usrDto.getUserInfo();

String electrombileCode=user.getElectrombileCode();

TroubleTicket ttk=troubleTicketDao.selectByElectrombileCode(electrombileCode);returnttk;

}privateString saveImages(MultipartFile[] images) {//当前时间 的 年月日路径 2017/06/27

String folderpath =DateUtil.getToday();//如果不是以/ 结尾 添加斜杠/ /smart-lease-pub/imgreport --> /smart-lease-pub/imgreport/

String uploadImgReportDir =upload_img_report_dir;if(!upload_img_report_dir.endsWith("/")){

uploadImgReportDir+="/";

}

StringBuilder urls= newStringBuilder();//最多只能上传4张报修图片

if(images.length>4) {throw new ValidException("E1000017", MessageUtil.getMessage("E1000017","图片张数"));

}for(MultipartFile image : images){//文件类型校验 image jpeg bmp.

String contentType =image.getContentType();if(!StringUtils.isBlank(contentType)){if (contentType.equals("image/jpeg") || contentType.equals("image/png")|| contentType.equals("image/bmp")) {

}else{throw new ValidException("E1000015", MessageUtil.getMessage("E1000015","图片类型"));//图片类型不合法

}

}else{throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片类型")); //图片类型不允许为空

}//文件大小校验

if(image.getSize() == 0){throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片内容"));

}//文件大小大于配置最大值

long fileSize =image.getSize();if(fileSize > max_img_size*1024){throw new ValidException("E1000031", MessageUtil.getMessage("E1000031", new Object[]{"图片大小",max_img_size*1024}));

}//图片保存路径和访问URL不能为空

if(StringUtils.isBlank(upload_img_report_dir) ||StringUtils.isBlank(upload_img_report_url)){throw new ValidException("E1000013", MessageUtil.getMessage("E1000013","图片保存路径和访问URL"));

}

String fileName= System.currentTimeMillis() + RandomUtil.getRandomNumber(4) + ".png"; //时间戳 + 四位随机数//文件完整路径示例 : /service/media/smart-lease-pub/imgreport/2018/12/12/xxxxxx.png

String path = upload_img_root + uploadImgReportDir + folderpath + "/";

File dir= newFile(path);if(!dir.exists()){

dir.mkdirs();

}

path+=fileName;

File newFile=newFile(path);try{

image.transferTo(newFile);

}catch(Exception e) {throw new BizException("E1000038", MessageUtil.getMessage("E1000038","保存图片"));

}

String url= upload_img_report_url + uploadImgReportDir + folderpath + "/" +fileName;

urls.append(url);

urls.append(Constants.URL_SPLIT);//多个用|分割

}return urls.substring(0,urls.length()-1);//去掉最后一个分隔符

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值