package com.hfkj.controller; import com.hfkj.config.SysConfig; import com.hfkj.common.utils.DateUtil; import com.hfkj.common.utils.ResponseMsgUtil; import com.hfkj.model.ResponseData; import com.hfkj.service.common.FileUploadService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.util.*; @RestController @RequestMapping(value="/fileUpload") @Api(value="文件上传") public class FileUploadController { private static Logger log = LoggerFactory.getLogger(FileUploadController.class); @Resource private SysConfig sysConfig; @Resource private FileUploadService fileUploadService; @RequestMapping(value="/uploadfile",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "文件上传") public ResponseData uploadFile(@RequestParam(value = "files" , required = false) MultipartFile files, HttpServletRequest request, HttpServletResponse response) throws Exception { try { response.setHeader("Access-Control-Allow-Origin", "*"); CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); // 判断 request 是否有文件上传,即多部分请求 List fileNames = new ArrayList(); if (multipartResolver.isMultipart(request)) { // 转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator iterator = multiRequest.getFileNames(); while (iterator.hasNext()) { MultipartFile file = multiRequest.getFile(iterator.next()); if (file != null) { FileOutputStream out = null; try { String fileType = file.getOriginalFilename() .substring(file.getOriginalFilename().lastIndexOf(".") + 1); String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")) + System.currentTimeMillis() + "." + fileType; String childPath = DateUtil.date2String(new Date(), "yyyyMM"); String destDirName = sysConfig.getFileUrl() + File.separator + childPath; File dir = new File(destDirName); if (!dir.exists()) { dir.mkdirs(); } out = new FileOutputStream(destDirName + File.separator + fileName); out.write(file.getBytes()); out.flush(); fileNames.add(childPath + "/" + fileName); } catch (Exception e) { log.error(e.getMessage(), e); } finally { if (out != null) { out.close(); } } } } } return ResponseMsgUtil.success(fileNames); } catch (Exception e) { log.error(e.getMessage(), e); return ResponseMsgUtil.exception(e); } } }