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.
138 lines
4.9 KiB
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);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|