package com.example.demo.controller;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@RequestMapping("/api/picture")
@RestController
public class PicUploadController {
private static final Logger logger = LoggerFactory.getLogger(PicUploadController.class);
//请求订单列表
@ResponseBody
@RequestMapping(value = "/batch/upload", method = RequestMethod.POST)
public String getOrderDtl(@RequestParam(value = "file") MultipartFile files[], HttpServletRequest request) {
logger.info("图片批量上传,files[]=",files);
// String uploadPath = request.getSession().getServletContext().getRealPath("/") + "/upload";
String uploadPath = "C:\\test\\upload";
File uploadDirectory = new File(uploadPath);
if (uploadDirectory.exists()) {
if (!uploadDirectory.isDirectory()) {
uploadDirectory.delete();
}
} else {
uploadDirectory.mkdir();
}
//这里可以支持多文件上传
if (files != null && files.length >= 1) {
BufferedOutputStream bw = null;
try {
for (MultipartFile file : files) {
String fileName = file.getOriginalFilename();
//判断是否有文件且是否为图片文件
if(fileName!=null && !"".equalsIgnoreCase(fileName.trim()) && isImageFile(fileName)) {
//创建输出文件对象
File outFile = new File(uploadPath + "/" + UUID.randomUUID().toString()+ getFileType(fileName));
//拷贝文件到输出文件对象
FileUtils.copyInputStreamToFile(file.getInputStream(), outFile);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "upload successful";
}
private Boolean isImageFile(String fileName) {
String[] img_type = new String[]{".jpg", ".jpeg", ".png", ".gif", ".bmp"};
if (fileName == null) {
return false;
}
fileName = fileName.toLowerCase();
for (String type : img_type) {
if (fileName.endsWith(type)) {
return true;
}
}
return false;
}
/**
* 获取文件后缀名
*
* @param fileName
* @return
*/
private String getFileType(String fileName) {
if (fileName != null && fileName.indexOf(".") >= 0) {
return fileName.substring(fileName.lastIndexOf("."), fileName.length());
}
return "";
}
}
环境为springboot2.0.6
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=100MB
spring.servlet.multipart.resolve-lazily=false