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;
}