pom.xml配置文件上传
<!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency>
两者版本相对应版本
配置service中产生表格
@Override public int updateHeaderSrc(Carousel carousel, MultipartFile file, HttpServletRequest request) { //获取源文件名 String originalFilename = file.getOriginalFilename(); String ext ="." + originalFilename.split("\\.")[1]; //使用UUID生成唯一标识 String uuid = UUID.randomUUID().toString().replace("-",""); String fileName = uuid + ext; String pre = "D:\\yutu\\images\\";//配置自己像放入文件夹 String path= pre + fileName; try { file.transferTo(new File(path));//放入对应文件夹下 carousel.setImage("http://localhost:8080"+"/api/file/" +fileName);//通过查询/api/file/时拦截 return carouselDao.updateById(carousel); }catch(IOException e) { throw new RuntimeException("头像上传失败"); } }
配置拦截器
package com.itheam.food.common.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class UploadFilePathConfig implements WebMvcConfigurer { @Value("${file.staticAccessPath}")//传出检测出来数据例如上表/api/file/ private String staticAccessPath; @Value("${file.uploadFolder}")//虚拟路径进入真实访问路径 private String uploadFolder; @Override public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder); } }
配置application.yml
file: staticAccessPath: /api/file/** uploadFolder: D:\yutu\images\
staticAccessPath配置的是虚拟路径查出的值
uploadFolder为真实要跳转的路径