我们项目需要实现图云的功能,即图片的上传与获取,通过springmvc获取图片并保存到本地,然后通过配置静态资源路径来访问图片,这个会导致一个问题:项目中使用的swagger不能访问(如果你没有使用就不用管了),那我们就需要单独配置一下swagger
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
文件上传controller
@Api(tags = "文件上传")
@RestController
@RequestMapping("/file/upload")
public class BaseActivityController {
@ApiOperation("测试文件上传")
@PostMapping("test")
public Res getBySortId(MultipartFile uploadFile) {
Res res = new Res();
//获取路径
Path path = Paths.get("src", "main", "resources","static");
File file = new File(path.toAbsolutePath().toString());
if (!file.exists()){
file.mkdirs();
}
//获取文件名
String filename = uploadFile.getOriginalFilename();
filename = filename.substring(filename.lastIndexOf("."));
String uuid= UUID.randomUUID().toString().replace("-", "");
filename=uuid+filename;
try {
//导入文件
uploadFile.transferTo(new File(path.toAbsolutePath().toString(),filename));
} catch (IOException e) {
e.printStackTrace();
}
res.setData(filename);
return res;
}
}
配置类
@Configuration
public class FileUploadConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
Path path = Paths.get("src", "main", "resources","static");
// 访问路径 图片本地地址
registry.addResourceHandler("/img/**").addResourceLocations("file:"+path+"\\");
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/","classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/","classpath:/META-INF/resources/webjars/");
}
}
上传图片