SpringBoot 实现单文件上传
2018-05-30 本文已影响56人
迷糊银儿
本次我实现的是一个简单的但文件上传项目,主要用到了MultipartFile这一自带的文件工具类以及@RequestParam注解
1.先写一个view,供上传文件的入口: uploadFile.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>index page</title>
</head>
<body>
<form th:action="@{/fileUpload}" method="post" enctype="multipart/form-data">
<p>选择文件:<input type="file" name="fileName"> </p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>
2.上传文件相关的controller文件:FileUploadController
@Controller
public class FileUploadController {
@RequestMapping(value = "/file")
public String file(){
return "uploadFile";
}
// MultipartFile是自带的上传文件的工具类
// @RequestParam("fileName") 中的参数名称同controller的参数名称保持一致
@RequestMapping(value = "fileUpload")
@ResponseBody
public String fileUpload(@RequestParam("fileName") MultipartFile multipartFile){
if(multipartFile.isEmpty())
return "请先选择要上传的文件";
String fileName=multipartFile.getOriginalFilename();
System.out.println("++++++++上传的文件名称为:"+fileName);
int fileSize=(int)multipartFile.getSize();
System.out.println("++++++++上传文件的大小为:"+fileSize);
//设定文件的保存位置
String basePath=System.getProperty("user.dir");
System.out.println("基础路径是:"+basePath);
String destPath=basePath+"/src/main/resources/static/pics";
System.out.println("+++++++++文件保存至:"+destPath);
File destFile=new File(destPath+"/"+fileName);
//对保存文件的路径进行空校验
if(!destFile.getParentFile().exists()){
System.out.println("判断文件父母了是否为空");
destFile.getParentFile().mkdir();
}
try {
System.out.println("没有输出吗?");
multipartFile.transferTo(destFile);
System.out.println(destFile.getParentFile().getName());
System.out.println("没有输出吗?");
return "上传文件成功";
}catch (IllegalStateException e){
e.printStackTrace();
return "上传文件失败";
}catch (IOException e){
e.printStackTrace();
return "上传文件失败";
}
}
}
注意:
- @RequestParam("fileName") 指定需要的参数与view中传递的参数名称保持一致,Spring会自动将这个参数与multipartFile绑定
- 文件上传后保存至 resources/static/pics 目录下