1、上传文件代码
/**
* @Description
* @Author zengyi
* @Date 2020-06-10
*/
@RequestMapping("/upload")
@RestController
@Api(description = "上传接口")
public class UploadController {
private static final Logger log = LoggerFactory.getLogger(UploadController.class);
@Value("${file.path}")
private String path;
//单个文件
@PostMapping("/image")
@ResponseBody
public Result upload(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return ResultGenerator.genFailResult("文件不能为空");
}
String fileName = file.getOriginalFilename();
File file1 = new File(path);
if (!file1.exists()) {
file1.mkdirs();
}
File dest = new File(path, fileName);
try {
file.transferTo(dest);
log.info(dest.getPath());
log.info("上传成功");
return ResultGenerator.genSuccessResult(dest.getPath());
} catch (IOException e) {
log.error(e.toString(), e);
}
return ResultGenerator.genFailResult("上传失败");
}
//多个文件
@PostMapping("/images")
@ResponseBody
public Result uploadFiles(HttpServletRequest request, HttpServletResponse response) {
List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
if (files == null || files.size() == 0) {
return ResultGenerator.genFailResult("文件不能为空");
}
File file1 = new File(path);
String tmp= "";
if (!file1.exists()) {
file1.mkdirs();
}
for (int i = 0; i < files.size(); i++) {
MultipartFile file = files.get(i);
if (file.isEmpty()) {
return ResultGenerator.genFailResult("上传第" + i + "文件失败");
}
String fileName = file.getOriginalFilename();
File dest = new File(path, fileName);
try {
file.transferTo(dest);
log.info("第" + (i + 1) + "个文件上传成功");
tmp.append(dest.getPath()).append(",");
} catch (IOException e) {
e.printStackTrace();
return ResultGenerator.genFailResult("上传第" + (i + 1) + "文件失败");
}
}
return ResultGenerator.genSuccessResult(tmp.substring(0,tmp.length()-1));
}
}
2、配置文件
开发环境dev保存文件的路径:
#文件保存地址
file.path=D:/upload/
生成环境prod保存文件的路径:
#文件保存地址
file.path=/upload/
3、配置文件访问路径的映射
/**
* Spring MVC 配置
*/
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
private final Logger logger = LoggerFactory.getLogger(WebMvcConfigurer.class);
@Value("${spring.profiles.active}")
private String env;//当前激活的配置文件
/**
* swagger页面放行
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
//映射
if (env.equals("dev")) {
registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/");
} else {
registry.addResourceHandler("/upload/**").addResourceLocations("file:/upload/");
}
}
}
4、测试效果
本地访问上传的图片
访问服务器上的图片