java 文件上传到本地文件夹下
package com.example.project.controller;
import com.example.utils.upload.UploadUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
/**
* 文件上传
*/
@Api("上传接口")
@RestController
@RequestMapping("/uploadFileController")
public class UploadFileController {
@ResponseBody
@ApiOperation("图片上传")
@PostMapping(value="/filesUpload",produces="application/json;charset=UTF-8")
public String filesUpload(@RequestParam(value = "files" ) MultipartFile[] files, HttpServletRequest request) {
String [] fileTypeArray = {".jpg",".gdf"};
String uploadFolder = "D:/upload/picture";
return UploadUtils.filesUpload(files,uploadFolder,fileTypeArray);
}
}
package com.example.utils.upload;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 文件上传工具类
*/
public class UploadUtils {
/**
* 验证文件类型(检查文件类型调用此方法)
*
* @param files 文件路径或名称
* @param uploadFolder 文件夹路径
* @param fileTypeArray 要求得文件类型数组
* @return 上传文件路径地址 以逗号分割 D:/upload/picture/20210630163728_a.jpg,D:/upload/picture/20210630163728_b.jpg
*/
//文件上传
public static String filesUpload(MultipartFile[] files, String uploadFolder, String[] fileTypeArray) {
List<String> filePathList = new ArrayList<>();
if (files != null && files.length > 0) {
for (MultipartFile file : files) {
//判断文件类型是否正确
if (!UploadUtils.checkFileType(file.getOriginalFilename(), fileTypeArray)) {//不是要求得文件类型
return "文件类型错误";
} else {//是要求得文件类型
// 保存文件
if (!file.isEmpty()) {
try {
String filePath = uploadFolder +"/"+ (new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + file.getOriginalFilename());
filePathList.add(filePath);
File saveDir = new File(filePath);
if (!saveDir.getParentFile().exists()) {
saveDir.getParentFile().mkdirs();
}
// 转存文件
file.transferTo(saveDir);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
// 数组转String字符串
return StringUtils.join(filePathList, ",");
}
/**
* 验证文件类型(检查文件类型调用此方法)
*
* @param filePath 文件路径
* @param fileTypeArray 要求得文件类型数组
* @return ture:符合得文件类型 false:不符合得文件类型
*/
public static boolean checkFileType(String filePath, String[] fileTypeArray) {
if (filePath == null || !(fileTypeCompare(filePath, fileTypeArray))) {
return false;
}
return true;
}
/**
* 文件和已知得文件类型比较
*
* @param filePath 文件路径
* @param fileTypeArray 要求得文件类型数组
* @return ture:符合得文件类型 false:不符合得文件类型
*/
public static boolean fileTypeCompare(String filePath, String[] fileTypeArray) {
boolean isTure = false;//
for (String fileType : fileTypeArray) {
if (org.springframework.util.StringUtils.endsWithIgnoreCase(filePath, fileType)) {//判断文件路径结尾是否在给的文件类型得数组中找到
isTure = true;
return isTure;
}
}
return isTure;
}
}