嗨森逛服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hai-server/hai-bweb/src/main/java/com/bweb/controller/FileUploadController.java

138 lines
4.9 KiB

package com.bweb.controller;
import com.hai.common.utils.DateUtil;
import com.hai.common.utils.ResponseMsgUtil;
import com.bweb.config.SysConfig;
import com.hai.model.ResponseData;
import com.hai.service.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<String> fileNames = new ArrayList<String>();
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> 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);
}
}
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ApiOperation(value = "上传文件(新接口)")
@ResponseBody
public ResponseData fileUpload(@RequestParam(name = "requestFile") MultipartFile requestFile,
@RequestParam(value = "uploadType", required = true) String uploadType,
HttpServletRequest request
) {
try {
CommonsMultipartResolver multipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
// 提取文件列表
List<MultipartFile> files = new ArrayList<>();
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iterator = multiRequest.getFileNames();
while (iterator.hasNext()) {
MultipartFile file = multiRequest.getFile(iterator.next());
files.add(file);
}
}
// 定制参数
Map<String, String> paramsMap = new HashMap<>();
if ("cmsModule".equals(uploadType)) {
paramsMap.put("pathPrefix", sysConfig.getFileUrl());
paramsMap.put("childPath", "/CMS/module/");
paramsMap.put("fileNameGenerator", "generateFileNameAndTimeStamp");
} else if ("cmsPatch".equals(uploadType)) {
paramsMap.put("pathPrefix", sysConfig.getFileUrl());
paramsMap.put("childPath", "/CMS/html/");
paramsMap.put("fileNameGenerator", "generateFileNameAndTimeStamp");
} else if ("cmsImg".equals(uploadType)) {
paramsMap.put("pathPrefix", sysConfig.getFileUrl());
paramsMap.put("childPath", "/CMS/img/");
paramsMap.put("fileNameGenerator", "generateFileNameAndTimeStamp");
}
return ResponseMsgUtil.success(fileUploadService.upload(files, paramsMap));
} catch (Exception e) {
log.error("FileUploadController --> addCategoryModule() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}