废话不多说直接上代码,我是在springboot项目上使用的,后来的使用者要甄别,以免出现失误。
前端部分:
<form class="form col-md-6 col-md-offset-3" enctype="multipart/form-data" action="upload-music" method="post">
<div class="form-group">
<label for="path">上传文件:</label><input type="file" name="path" id="path" class="form-control"/>
</div>
<div class="form-group">
<button class="btn btn-primary col-md-offset-5 publish" type="submit">上传</button>
</div>
</form>
java后台部分:
@RequestMapping(value = "/upload-music",method = RequestMethod.POST)
@ResponseBody
public String uploadMusic(@RequestParam("path") MultipartFile path) throws FileNotFoundException {
// request.setCharacterEncoding("UTF-8");
// response.setCharacterEncoding("UTF-8");
if (path.isEmpty()) {
return "上传失败,请选择文件";
}
String fileName = path.getOriginalFilename();
String filePath = ResourceUtils.getURL("classpath:").getPath()+"static/upload/";
File dest = new File(filePath + fileName);
try {
path.transferTo(dest);
// LOGGER.info("上传成功");
return "上传成功";
} catch (IOException e) {
// LOGGER.error(e.toString(), e);
}
return "上传失败!";
// return path.getName();
}
要点总结:
1、务必使用 MultipartFile 来读取表单文件;
2、不要忘记在头部设置 method = RequestMethod.POST ,否则会被当做GET的传输方式来处理;
3、这段代码没有使用apache的FileUpload插件,上传文件的功能使用的是springframework自带的功能,没有其他各种乱七八糟的东西,可以放心直接复制使用;
4、ResourceUtils.getURL("classpath:").getPath() 是项目发布目录(即项目中的/target/classes目录),作为文件保存目录。