package com.qxueyou.scc.controller; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import com.qxueyou.scc.base.model.FileMeta; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.teach.res.service.IFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; /** * 文件上传控制器 * * @author xiadehu */ @Api(tags="文件上传通用接口") @Controller @RequestMapping(value = "/base/file") public class FileController { private final Logger log = LogManager.getLogger("FileController"); @Autowired IFileService fileService; /** * 通用上传接口 * * @TODO : 目前缺少对 各模块文件个数、文件格式、文件大小的上传控制,统一增加在configFileModule表里面即可实现 1 图片; 2 文档 3 视频 4 音频 * @param response * @return */ @ApiOperation(value="通用上传接口", notes="目前缺少对 各模块文件个数、文件格式、文件大小的上传控制,统一增加在configFileModule表里面即可实现 1 图片; 2 文档 3 视频 4 音频") @RequestMapping(value = "/upload", headers = "content-type=multipart/*", method = RequestMethod.POST) public @ResponseBody List doUpload(MultipartHttpServletRequest request, HttpServletResponse response) { // 2.循环取得文件 Iterator itr = request.getFileNames(); MultipartFile mpf = null; List files = new ArrayList(2); FileMeta fileMeta = null; while (itr.hasNext()) { // 2.从request中取的下一个 MultipartFile mpf = request.getFile(itr.next()); // 2.2 创建一个FileMeta fileMeta = new FileMeta(); try { Result uploadResult = fileService.doUpload(mpf.getInputStream(), mpf.getOriginalFilename()); fileMeta.setFileId(uploadResult.getDataT("fileId")); fileMeta.setPath(uploadResult.getDataT("path")); } catch (Exception e) { String desp = e.getMessage(); desp = desp.length() > 120 ? desp.substring(0, 120) : desp; log.error("上传模块解析出错:" + e); } fileMeta.setFileName(mpf.getOriginalFilename()); fileMeta.setFileSize(mpf.getSize() / 1024 + " Kb"); fileMeta.setFileType(mpf.getContentType()); // 2.4 add to files files.add(fileMeta); } return files; } }