最近需要给APP提供接口,其中有上传照片的,于是写了下面这个接口。
支持上传多个文件,包括但不限于图片。代码较简单,就不多作解释。
提一个点:由于是文件上传,因此不能把数据格式设置为"application/json;charset=UTF-8",会导致接口调不通,注意!
/**
* 上传照片
* @return
*/
@RequestMapping(value="/uploadphoto",method=RequestMethod.POST)
@ResponseBody
public String uploadPhoto(HttpServletRequest request){
AppResultJson resultJson = new AppResultJson();
//创建一个通用的多部分解析器.
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//设置编码
commonsMultipartResolver.setDefaultEncoding("utf-8");
//判断 request 是否有文件上传,即多部分请求..
if (commonsMultipartResolver.isMultipart(request)){
try {
MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest) request;
List<MultipartFile> files=mulReq.getFiles("files");
List<String> map=relieveRiskService.uploadPhoto(files);
resultJson.setObj(map);
resultJson.setMsg("上传成功");
resultJson.setStatus(ResultStatusConstants.SUCCESS);
} catch (Exception e) {
resultJson.setMsg("上传失败,"+e.getMessage());
resultJson.setStatus(ResultStatusConstants.SYS_ERROR);
logger.error(e.getMessage());
}
}else{
resultJson.setMsg("上传照片不能为空。");
resultJson.setStatus(ResultStatusConstants.PARAM_ERROR);
}
return JsonMapper.toJsonString(resultJson);
}