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


    Controller层:
    @ResponseBody
         @RequestMapping(value = "", method = RequestMethod.POST)
         public JSONObject addTroubleTicket(HttpServletRequest request,
                                            @RequestParam(value="accessToken",required=true)String accessToken,
                                            TroubleTicket troubleTicket,
                                            @RequestParam(value="file",required=false) MultipartFile[] images) throws Exception{
            troubleTicketReportService.addTroubleTicket(troubleTicket, images, accessToken);
            return returnSuccess();
        }
    ps:图片表单提交,所以不能用@RequestBody接收参数,可以用对象接收。




    Service层:
    @Service("troubleTicketReportImpl")
    public class TroubleTicketReportImpl implements TroubleTicketReportService{
    
        @Resource(name="troubleTicketDaoImpl")
        private TroubleTicketDao  troubleTicketDao;
    
        @Resource(name="electrombileDaoImpl")
        private ElectrombileDao 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);
    
        @Override
        public void addTroubleTicket(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 = new Electrombile();
            electrombile.setElectrombileCode(electrombileCode);
            List<Electrombile> 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 = new TroubleTicket();
            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(new Date());
            ttk.setReportPhoto(reportPhoto);
            ttk.setSubscriberId(subscriberId);
            ttk.setStatus(0);
            troubleTicketDao.insertSelective(ttk);
        }
    
    
        @Override
        public TroubleTicket queryByElectrombileCode(String accessToken) {
            AppUserDTO usrDto = KeyUtil.getAppUserByAccessToken(accessToken);
            AppUser user = usrDto.getUserInfo();
            String electrombileCode = user.getElectrombileCode();
            TroubleTicket ttk = troubleTicketDao.selectByElectrombileCode(electrombileCode);
            return ttk;
        }
    
    
        private String 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 = new StringBuilder();
    
            //最多只能上传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 = new File(path);
                if(!dir.exists()){
                    dir.mkdirs();
                }
                path += fileName;
                File newFile=new File(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);//去掉最后一个分隔符
        }
    
    
    
    
    }
  • 相关阅读:
    使用代码为textview设置drawableLeft
    Android Studio下添加assets目录
    lib32asound2 : Depends: libc6-i386 (>= 2.7) but it is not going to be installed
    android addJavascriptInterface 不能生效 解决办法
    [Android] 判断手机上是否安装了某个程序
    Github如何回退/回滚到某个版本
    Android导入第三方静态库.a编译成动态库.so
    (总结)Ubuntu apt-get apt-cache命令 使用
    C++11多线程std::thread的简单使用
    Android防止进程被第三方软件杀死
  • 原文地址:https://www.cnblogs.com/weihuang6620/p/11023243.html
Copyright © 2020-2023  润新知