/** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception { File targetFile = new File(filePath); if(!targetFile.exists()){ targetFile.mkdirs(); } FileOutputStream out = new FileOutputStream(filePath+File.separator+fileName); out.write(file); out.flush(); out.close(); }
public class TestApplication extends WebMvcConfigurerAdapter { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @Value("${upload.filePath}") private String filePath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/"); registry.addResourceHandler("/images/**").addResourceLocations("file:"+filePath); super.addResourceHandlers(registry); } }
3. 上传的主要方法实现mongodb
@PostMapping("/test/common/uploadFile") public String uploadFile( @RequestParam("file") MultipartFile file, HttpServletRequest request) { try { //定义相对路径 String relativePath = File.separator+DateUtil.getToday()+File.separator; String path = filePath + relativePath; String fileName = file.getOriginalFilename(); String uuid = UUID.randomUUID().toString().replaceAll("-",""); String suffix = fileName.substring(fileName.lastIndexOf(".")); //随机生成新的文件名,防止文件名冲突或者中文乱码问题 String newFileName = uuid+suffix; //调用上传方法将文件上传到物理路径下 FileUtil.uploadFile(file.getBytes(),path,newFileName); //可选:将图片路径存储起来为了按期清理图片(能够存储到非关系型数据库中,如mongodb) PicturePathDTO dto = new PicturePathDTO(); dto.setPath(images+relativePath+newFileName); dto.setCreateTime(new Date()); picturePathDao.save(dto); //返回虚拟路径 return (images+relativePath+newFileName); } catch (Exception e) { e.printStackTrace(); } return null; }