单文件上传
HTML
<form action="/upload" method="post" enctype="multipart/form-data">
<p>
选择文件1:<input type="file" name="files">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
控制层
@Controller
public class FileUploadController {
private Logger logger= LoggerFactory.getLogger(this.getClass());
@GetMapping("/upload")
public String upload(){
return "test";
}
@PostMapping("/upload")
@ResponseBody
/**
* 注意:此处的 @RequestParam("files") 参数中的 files 时HTML页面中的 <input type="file" name="files"> 中的name的值
*/
public String uploadFile(String name, @RequestParam("files") MultipartFile file){
/**
* 没有上传文件
*/
if (file.isEmpty()) {
return "上传失败,请选择文件";
}
/**
* 正常上传文件
*/
//获取上传文件的文件名
String fileName=file.getOriginalFilename();
logger.info("文件名为:"+fileName);
//获取文件后缀名
String suffixName=fileName.substring(fileName.lastIndexOf("."));
logger.info("文件后缀名为:"+suffixName);
// //重新生成文件名
// suffixName= UUID.randomUUID().toString()+suffixName;
//指定文件存储目录
String savePath="E:/log/";
logger.info("文件保存目录"+savePath);
// java.io.File newFile=new java.io.File(savePath+suffixName);
java.io.File newFile=new java.io.File(savePath+fileName);
try {
file.transferTo(newFile);
logger.info("上传成功!");
return "上传成功!";
} catch (IOException e) {
e.printStackTrace();
logger.error(e.toString());
}
return "上传失败";
}
}
多文件上传
HTML
<form action="/uploadMore" method="post" enctype="multipart/form-data">
<p>
选择文件1:<input type="file" name="files">
</p>
<p>
选择文件2:<input type="file" name="files">
</p>
<p>
选择文件3:<input type="file" name="files">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
@Controller
public class FileUploadMore {
private Logger logger= LoggerFactory.getLogger(this.getClass());
@GetMapping("/uploadMore")
public String uploadMore(){
return "test1";
}
@PostMapping("/uploadMore")
@ResponseBody
public String uploadMoreFile(HttpServletRequest request, @RequestParam("files") MultipartFile[] multipartFiles) throws IllegalStateException {
//获取前端上传的文件列表
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
/**
* 定义文件上传保存的路径
*/
String uploadDir = "E:/log/";
//
for (int i = 0; i < files.size(); i++) {
MultipartFile files1 = files.get(i);
if (files1.isEmpty()) {
logger.info("上传第" + (i++) + "个文件失败,请重新尝试上传文件!");
}
String fileName=files1.getOriginalFilename();
try {
files1.transferTo(new File(uploadDir + fileName));
logger.info("第" + (i + 1) + "个文件上传成功!");
} catch (IOException e) {
e.printStackTrace();
System.err.println(e.toString());
logger.info("第" + (i++) + "个文件上传失败!");
}
}
return "上传成功";
}
}