文件上传的控制器类
FileUploadController.java
package com.dennis.controller;
import java.io.File;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping(value = "/file")
public class FileUploadController {
private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);
@RequestMapping(value = "/upload")
@ResponseBody
public String upload(@RequestParam("myFile") MultipartFile file) {
if (file.isEmpty()) {
return "文件为空";
}
// 获取文件名
String fileName = file.getOriginalFilename();
logger.info("上传的文件名为:" + fileName);
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
logger.info("上传的后缀名为:" + suffixName);
// 文件上传路径
String filePath = "d:/mydir/";
// 解决中文问题,liunx下中文路径,图片显示问题
// fileName = UUID.randomUUID() + suffixName;
File dest = new File(filePath + fileName);
// 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
return "上传成功";
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败";
}
}
添加对文件上传的支持
application.yaml
spring:
http:
multipart:
enabled: true #默认支持文件上传.
file-size-threshold: 0 #支持文件写入磁盘.
location: / # 上传文件的临时目录
max-file-size: 1Mb # 最大支持文件大小
max-request-size: 10Mb # 最大支持请求大小
客户端测试
日志打印
2017-08-15 22:26:40.037 INFO 8044 --- [nio-8080-exec-1] c.d.controller.FileUploadController : 上传的文件名为:exception-dir-struct.jpg
2017-08-15 22:26:40.037 INFO 8044 --- [nio-8080-exec-1] c.d.controller.FileUploadController : 上传的后缀名为:.jpg
文件上传成功