先说说这个机制问题,10秒超时,微信浏览器会自动使用代理进行提交,并且会打断第一次提交,如果你是订单的话,你就只能呵呵了。
我就是有个功能,上传一堆的附件到oss去,结果超过10s了,你会发现时间越来越久,原来微信给你再次提交,订单直接报id错误。
移动端的ie6,不想说什么了,直接贴代码:
/** * 保存车辆申请记录 */ @CheckLogin @Certification @RequestMapping(value="/saveApply",method=RequestMethod.POST) public void saveApply( LoanApplicationRecord loanApplicationRecord ,@RequestParam String CAR_POSITIVE ,@RequestParam String CAR_BACK ,@RequestParam String CAR_LEFT ,@RequestParam String CAR_RIGHT ,@RequestParam String ENGINE_NAMEPLATE ,@RequestParam String VEHICLE_REGISTRATION_FRONT ,@RequestParam String VEHICLE_REGISTRATION_BACK ,@RequestParam String DRIVING_PERMIT ,@RequestParam String VEHICLE_PURCHASE_CONTRACT ,String LOAN_FILE_OTHER ,HttpServletRequest request ,HttpServletResponse response){ ResultVO rv = ResultVO.getFailInstance(); try { /** * 开始保存申请记录 */ loanApplicationRecordService.submit(getSessionUserID(request) ,loanApplicationRecord); // 登录成功 rv.setSuccess(); }catch(BusinessRuntimeException e){ rv.setMsg(e.getMessage()); }catch (Exception e) { // 未知异常,打印日志,返回系统错误 LogUtils.error(e.getMessage()); rv.setSysError(); } try{
// 重点就是在这里........ 直接保存记录返回结果,够简单粗暴吧,
//前提是你要保证下面的代码没啥问题,反正我是没法保证了。
//反正就几个文件,大不了重新叫他上传吧。哈哈
response.getWriter().print(rv.toJson()); response.getWriter().flush(); response.getWriter().close();
// 这里就不管能不能成功了。这么多文件,管他呢,我只能说,秒传,what the fuck ...WX // 这里进行文件的上传,时间过长,故先返回结果。 String basePath = request.getServletContext().getRealPath("/"); Long userId = getSessionUserID(request); User user = getSessionUserByDB(request); loanApplicationAttachmentService.insert(basePath, CAR_POSITIVE, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.CAR_POSITIVE); loanApplicationAttachmentService.insert(basePath, CAR_BACK, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.CAR_BACK); loanApplicationAttachmentService.insert(basePath, CAR_LEFT, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.CAR_LEFT); loanApplicationAttachmentService.insert(basePath, CAR_RIGHT, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.CAR_RIGHT); loanApplicationAttachmentService.insert(basePath, ENGINE_NAMEPLATE, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.ENGINE_NAMEPLATE); loanApplicationAttachmentService.insert(basePath, VEHICLE_REGISTRATION_FRONT, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.VEHICLE_REGISTRATION_FRONT); loanApplicationAttachmentService.insert(basePath, VEHICLE_REGISTRATION_BACK, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.VEHICLE_REGISTRATION_BACK); loanApplicationAttachmentService.insert(basePath, DRIVING_PERMIT, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.DRIVING_PERMIT); loanApplicationAttachmentService.insert(basePath, VEHICLE_PURCHASE_CONTRACT, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.VEHICLE_PURCHASE_CONTRACT); loanApplicationAttachmentService.insert(basePath, LOAN_FILE_OTHER, FileTypeEnum.APPLY_LOAN.getPath() + userId + "/", user, loanApplicationRecord, LoanFileTypeEnum.LOAN_FILE_OTHER); }catch(Exception e){ } }
