在Jfinal Config类中只能定义默认上传路径,而我们公司项目需要根据用户进行分类。所以就做了一个,由于JFInal上传文件会上传到默认路径,所以需要根据它默认的上传路径进行删除操作,感觉就这点有点蛋疼 public void identification() { HttpServletRequest req = getRequest(); String uploadPath = ""; // 文件上传大小设置为20mb,此处不是单个文件大小,是指上传文件总大小 String encoding = "utf-8"; Integer maxPostSize = 1024 * 1024 * 20; // 获取前端文件数据,getFiles必须放在getPara前面,否则getPara将获取不到值 List<UploadFile> filesList = null; try { // 获取表单数据,根据JFinal文档,getFile必须放在getPara之前,否则无法获取到其他文本数据 filesList = getFiles(uploadPath, maxPostSize, encoding); } catch (Exception e) {// 捕获异常 // e.printStackTrace(); // 打印异常 System.out.println("文件大小异常:" + e);//自定义打印 //向前端返回失败原因 renderJson(Msg.clear().fail().put("reason", "上传图片总大小不得大于20MB")); return; } // 判断文件集合是否为空 if (filesList.size() == 0) { renderJson(Msg.clear().fail().put("reason", "文件为空")); return; } //appkey值 String appKey = getPara("appKey"); File file = null; if (appKey == null || "".equals(appKey.trim())) { renderJson(Msg.clear().fail().put("reason", "appkey不能为空")); } else if (identifyKey.equals(appKey.trim())) { // 获取机构代码 String officeCode = getPara("officeCode"); // 获取商户手机号 String merchantPhone = getPara("merchantPhone"); // 根据机构号和商户手机号查询商户信息 Merchant mer = merchantApp.queryMerByPhone(merchantPhone, officeCode); if (mer == null) { renderJson(Msg.clear().fail().put("reason", "商户不存在或不在机构下")); return; } Map<String, String> fileMap = new HashMap<>(); fileMap.put("merchantCode", mer.getMerchantCode()); for (UploadFile uploadFile : filesList) { //获取文件参数名长度 Integer length = uploadFile.getParameterName().length(); //获取上传文件大小 long size = uploadFile.getFile().length(); //重定义文件上传路径,Jfinal默认上传路径 + 商户文件夹+商户编号 + 参数名+参数名+图片文件后缀 String path = uploadFile.getUploadPath() + "merchant\\" + mer.getMerchantCode() + "\\" + uploadFile.getParameterName().substring(0, length - 1) + "\\" + uploadFile.getParameterName() + ".jpg"; //判断文件大小大于2mb则返回错误信息,并终止上传,删除上传文件 if (size > 1024 * 1024 * 2) { renderJson(Msg.clear().fail().put("reason", "图片文件大小大于2MB,请做好大小处理")); for (UploadFile uploadFile1 : filesList) { //根据JFinal上传文件路径删除文件 uploadFile1.getFile().delete(); } return; } //自定义路径 file = new File(path); //判断文件夹是否存在 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs();// 创建文件夹 } // file文件存在则删除并执行上传,不存在则直接执行上传 if (file.exists()) { // 删除旧文件 file.delete(); } uploadFile.getFile().renameTo(file);// 上传文件到指定位置 // 判断图片是否大于1/4Mb 如果大于则压缩图片 if (size > 1024 * 1024 / 4) { try { //此处是谷歌图片按比例压缩方法 Thumbnails.of(file).scale(0.25f).toFile(path); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //将图片路径放入到map集合 fileMap.put(uploadFile.getParameterName(), path); } //创建商户进件service层 MerchantFeedPartServiceImpl impl = new MerchantFeedPartServiceImpl(); //查询商户信息 List<Merchantfeedpart> list = impl.queryFeedPartByMerCode(mer.getMerchantCode()); boolean bool = false; if (list.size() > 0) { bool = impl.updateRealNameInfo(fileMap); System.out.println("修改"); } else { bool = impl.addRealNameInfo(fileMap); System.out.println("新增"); } if (bool) { renderJson(Msg.clear().success().put("reason", "上传成功")); } else { renderJson(Msg.clear().fail().put("reason", "上传失败")); } } else { //appkey不正确,则删除当次所有上传的文件 renderJson(Msg.clear().fail().put("reason", "appKey值不正确")); for (UploadFile uploadFile : filesList) { uploadFile.getFile().delete(); } } }