上传多个附件的demo

  1:控制层

    /**

     * 上传附件
     */
    @ApiOperation(value = "加参数上传附件", notes = "上传附件", produces = "application/json")
    @RequestMapping(value="/fileByType",method=RequestMethod.POST,consumes = "multipart/form-data", produces = "application/json")
    @ResponseBody
    public Response<String> fileUploadByType(@ApiParam(value="上传的文件",required=false) @RequestParam(value = "file") MultipartFile[] files,
            @ApiParam(value="业务类型",required=false)@RequestParam Integer type)throws Exception
    {
        if (null == files || files.length == 0) {
            throw new RRException("未上传附件,请先上传!");
        }
        StringBuffer sf = new StringBuffer();
        List<Long> ids = new ArrayList<Long>();
        String finalFileIds = "";
        try {
             //业务类型参数 :type
             ids = mesFilesService.saveFiles(files, getUserId(), type);
             for (Long id : ids) {
                    sf.append(id.longValue()).append(",");
                }
                finalFileIds = !"".equals(sf.toString()) ? sf.toString().substring(0, sf.toString().length() - 1) : "";
        } catch (Exception e) {
            LOGGER.error("上传失败:"+e.getMessage());
        }
    
        Response<String> res = new Response<String>();
        res.setData(finalFileIds);
        res.setCode(HttpStatus.SC_OK);
        res.setMsg("上传成功!");
        return res;

    }

2:服务层

    /**
     * 保存附件信息到指定位置
     * @param files 附件
     * @param userId 当前登录用户的id
     * @param routingName 工艺或者工序的名称
     * @return
     */
    @Transactional
    @Override
    public List<Long> saveFiles(MultipartFile[] files,Long userId,int businessType) {
        // 返回保存多个附件的id
        List<Long> fileIds = new ArrayList<Long>();
        for (MultipartFile file : files) {
            // 获取文件大小
            Long fileSize = file.getSize();
            Long maxSize = Long.valueOf(fileMaxSize);
            if (fileSize > maxSize) {
                throw new RRException("上传失败,文件大小不能超过"+maxSize/1024/1024+Constants.FILE_UNIT_01);
            }
            // 获取真实路径来存放图片
            String realPath = filePath;
            // 获取上传文件的真实名称
            String realName = file.getOriginalFilename();
            // 获取文件的后缀名
            String suffifName = realName.substring(realName.lastIndexOf("."));
            //得到最终的文件名
            //String fileName = routingName + "文件" + suffifName;
            //最终得到的文件名
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
            realName  = realName.substring(0,realName.lastIndexOf("."));
            String fileName = realName +"_"+ df.format(new Date()) + suffifName;
            
            // 临时文件目录
            File templatFile = new File(realPath, fileName);
            if (!templatFile.getParentFile().exists()) {
                templatFile.getParentFile().mkdir();
            }

            if (templatFile.exists()) {
                templatFile.delete();
            }
            try {
                templatFile.createNewFile();
                // 将接收到的文件传输到指定的目标文件。
                file.transferTo(templatFile);
            } catch (IOException e) {
                e.printStackTrace();
            }

            // 保存附件信息
            MesProductionFilesEntity filesEntity = new MesProductionFilesEntity(businessType, fileName, realPath+File.separator+fileName, userId);
            try {
                mesFilesDao.save(filesEntity);
            } catch (Exception e) {
                LOGGER.error("保存附件失败:" + e.getMessage());
            }
            // 获取文件ids
            fileIds.add(filesEntity.getId());
        }

        return fileIds;
    }



猜你喜欢

转载自blog.csdn.net/fxj0720/article/details/80050854