application.yml配置
spring: profiles.active: aeolian ## MULTIPART (MultipartProperties) # 开启 multipart 上传功能 servlet.multipart.enabled: true # 文件写入磁盘的阈值 servlet.multipart.file-size-threshold: 1KB # 最大文件大小 servlet.multipart.max-file-size: 200MB # 最大请求大小 servlet.multipart.max-request-size: 215MB ## 文件存储所需参数 # 所有通过 REST APIs 上传的文件都将存储在此目录下 file.upload-dir: ./uploads
Controller
@RestController @RequestMapping("/wx/media") public class MediaController { @Resource private WxCpProperties properties; private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 临时文件上传 - 只有一个文件 * @param type * @param request * @return * @throws WxErrorException * @throws IOException */ @RequestMapping(value = "/uploadTemp/{type}", method = {RequestMethod.GET,RequestMethod.POST},produces = "application/json;charset=UTF-8") public String sendMessage(@PathVariable String type,HttpServletRequest request) throws WxErrorException, IOException { List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); MultipartFile multipartFile = null; if (files.size()>0){ multipartFile = files.get(0); }else { /*读取文件失败*/ logger.error("临时文件上传失败,未读取到文件!"); mediaResult.setErrmsg("未读取到上传的文件!请确保Content-Type为multipart/form-data;并且文件参数的key为file"); return JsonUtils.toJson(mediaResult); } /*验证上传文件大小,防止浪费空间内存*/ long sizeMb = multipartFile.getSize() / (1024 * 1024); if (sizeMb > 50){ mediaResult.setErrmsg("文件过大,详情查看 https://work.weixin.qq.com/api/doc/90000/90135/90253"); return JsonUtils.toJson(mediaResult); } String result = ""; /*主要业务逻辑*/ return result; } }