最近有个需求是上传文件到服务器,使用到的框架是springboot,查询资料后记录如下。
1.添加基本依赖
这是第一步,但一般建立springboot项目的时候能够勾选该启动依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.前端form
这是我项目中提交文件的前端代码,这个就因人而异了。(使用的thymeleaf)
<div class="card">
<div class="card-header">
文件上传
</div>
<div class="card-body card-block">
<form th:action="'/upload?projectid='+${project.projectid}" method="post" class="form-horizontal" id="fileform" enctype="multipart/form-data">
<div class="row form-group">
<div class="col col-md-3"><label for="file-multiple-input" class=" form-control-label">项目申报书上传</label></div>
<div class="col-12 col-md-9"><input type="file" id="file-multiple-input" name="file-multiple" multiple="multiple" class="form-control-file" required="required"></div>
</div>
</form>
</div>
<div class="card-footer">
<button class="btn btn-primary btn-sm" id="fileupload" onclick="tijiao()">
<i class="fa fa-dot-circle-o"></i> 提交
</button>
</div>
</div>
或者简单点,可以这样。
<form th:action="'/upload?projectid='+${project.projectid}" method="post" enctype="multipart/form-data">
<input type="file" name="file-multiple" multiple="multiple">
<button type="submit">提交</button>
</form>
3.controller代码
前端提交请求传到控制层,控制层代码如下。
@Autowired
private ProjectService projectService = null;
@RequestMapping("/upload")
@ResponseBody
public String upload(@RequestParam("file-multiple") MultipartFile file,
@RequestParam("projectid") int projectid){
if(file.isEmpty()){
return "请选择文件!";
}
String fileName = file.getOriginalFilename();
//设置文件上传位置
String filePath = "C:\\Users\\xiepl\\Desktop\\testfiles\\";
File dest = new File(filePath + fileName);
try{
file.transferTo(dest);
projectService.updatefile(projectid, filePath);
return "上传成功!";
}catch (IOException e){
;
}
return "上传失败!";
}
transferTo方法就将文件上传到指定的路径了。