ti_baby_hu 2016-09-20 07:37 采纳率: 0%
浏览 1241
已结题

springmvc 上传MultipartFile

直接看代码,如果前台页面不带有上传文件,就进不了controller,

     @RequestMapping(value="/addApplicationFile")   
         public  void  addApplicationFile( ApplicationFile  applicationFile,HttpServletRequest request,HttpServletResponse response,@RequestParam(value="file", required=false) MultipartFile file){ 
                Map<String, Object>   resultMap = new HashMap<String,Object>();
                boolean   localUploadStatus = false;
                boolean   ftpUploadStatus = false;
                OptionsItems    optionsItems = null;
             Long userId = null;
                FtpFileList ftpFileList  = null;
                try {
                      userId = SystemUtil.getUserId(request);   //设置请求编码  
                      if( null == userId ){
                            SystemUtil.userInvalid(request, response);
                            return;
                      }

                      if(    
                                null == applicationFile ||
                                null == applicationFile.getFileName() ||  applicationFile.getFileName().equals("") ||
                                null == applicationFile.getApplicationVersion() || applicationFile.getApplicationVersion().equals("") ||
                                null == applicationFile.getApplicationName() ||  applicationFile.getApplicationName().equals("") ||
                                null == applicationFile.getFileType() || applicationFile.getFileType().equals("") 
                        ){
                           resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_ERROR);
                             resultMap.put(Constant.SHRG_MESSAGE, Constant.REQUEST_PARAM_ERROR);
                             SystemUtil.outputJsonObject(resultMap, response);
                             return;
                        }
                         int length = applicationFileService.validateApplicationName(applicationFile);
                         if(length>0){
                             resultMap.put(Constant.SHRG_FLAG, Constant.RESULT_STATUS_FLAG);
                             resultMap.put(Constant.SHRG_MESSAGE, Constant.APPLICATION_FILE_IS_EXIST);
                             SystemUtil.outputJsonObject(resultMap, response);
                             return;
                         }
                        //先上传再入库
                        if (null != file && !file.isEmpty()) {
                            //文件上传路径
                            StringBuffer realPath = new StringBuffer();//tomcat相对路径
                            realPath.append(Constant.PATH_SEPARATOR_SLASH).append(Constant.PATH_APPLICATION_UPLOAD);//PATH_APPLICATION_UPLOADnew String(Constant.PATH_APPLICATION_UPLOAD.getBytes("GBK"),"iso-8859-1")
                            //在数据得到上传的类型
                            optionsItems =  new OptionsItems();
                            optionsItems.setModule(Constant.INFO_DIFF);
                            optionsItems.setOptionCode(Constant.APP_UPLOAD_FILE_TYPE);
                            List<OptionsItems> listO = optionsItemsService.initOptionsItem(optionsItems);
                            optionsItems =  new OptionsItems();
                            optionsItems.setModule(Constant.TER);
                            optionsItems.setOptionCode(Constant.SOFTWARE_UPDATE_FILE_TYPE);
                            List<OptionsItems> listT = optionsItemsService.initOptionsItem(optionsItems);
                            //执行上传
                            if(applicationFile.getUploadType() != null && Constant.UPLOAD_TYPE_A.equals(applicationFile.getUploadType())){
                                String fileType = listO.get(0).getAttribute1();
                                fileType = fileType.replaceAll("\\.",   "");
                                ftpFileList = FileUpload.upload(file,realPath.toString(), fileType,request);
                            }else{
                                String fileType = listT.get(0).getAttribute1();
                                fileType = fileType.replaceAll("\\.",   "");
                                ftpFileList = FileUpload.upload(file,realPath.toString(),fileType,request);
                            }
                            if(null !=ftpFileList)
                                localUploadStatus = true;
                            ftpUploadStatus = FtpManager.getInstance().uploadFile(ftpFileList.getPath(), ftpFileList.getFtpFilename(), ftpFileList.getFtpPath());
                            FileUtil.delFile(ftpFileList.getPath(),ftpFileList.getFtpFilename());//删除本地文件 

                            applicationFile.setFileSize(ftpFileList.getFileSize()+"");
                            applicationFile.setFileType(ftpFileList.getFileSuffix());
                            applicationFile.setFtpFileName(ftpFileList.getFtpFilename());   
                            applicationFile.setFtpFilePath(ftpFileList.getFtpPath()+Constant.PATH_SEPARATOR_SLASH);
                            applicationFile.setCreatedBy(userId);
                            applicationFile.setLastUpdateBy(userId);
                            //文件上传之后,再将文件 入库
                            applicationFileService.addApplicationFile(applicationFile);
                            resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_SUCCESS);
                             resultMap.put(Constant.SHRG_MESSAGE, Constant.ADD_SUCCESS);
                        }else{
                            resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_ERROR);
                             resultMap.put(Constant.SHRG_MESSAGE, Constant.UPLOAD_FILE_IS_NULL);
                        }
                        SystemUtil.outputJsonObject(resultMap, response);
             }catch(Exception ex){
                 ex.printStackTrace();
                    if(ftpUploadStatus){
                        String deletePath = ftpFileList.getFtpPath()+Constant.PATH_SEPARATOR_SLASH +ftpFileList.getFtpFilename();
                        try {
                            FtpManager.getInstance().removeFile(deletePath);
                        } catch (Exception e) {
                            int resultCodeA = ShrgLog.exceptionLogMap(this, Constant.ERROR_LEVEL, Constant.INFO_DIFFUSION_PUBLISH, Constant.ADD_UPLOAD_APPLICATION_FILT, e,userId);
                            SystemUtil.exceptionHandle(response, resultCodeA);
                        }
                    }else if(localUploadStatus){
                        FileUtil.delFile(ftpFileList.getPath(),ftpFileList.getFtpFilename());//删除本地文件 
                    }
                    int resultCode = ShrgLog.exceptionLogMap(this, Constant.ERROR_LEVEL, Constant.INFO_DIFFUSION_PUBLISH, Constant.ADD_UPLOAD_APPLICATION_FILT, ex,userId);
                    SystemUtil.exceptionHandle(response, resultCode);

             }

  • 写回答

3条回答 默认 最新

  • Royal_lr 2016-09-20 08:40
    关注

    进不了请求,,前台会报错吗

    评论

报告相同问题?

悬赏问题

  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件