本文共 3707 字,大约阅读时间需要 12 分钟。
2021/1/1 1:00 am 单文件上传实现
2020/1/1 16:30 pm 多文件上传实现,前端跨与请求配置
application.yaml
定义一个存放上传文件的位置web: upload-path: /xxx/uploadFile/
@RestControllerpublic class FileUploadController { @Value("${web.upload-path}") String fileDir; @PostMapping("upload") public Map upload(MultipartFile file, HttpServletRequest request){ String realPath = fileDir; File folder= new File(realPath); if (!folder.exists()){ folder.mkdirs(); } String oldName=file.getOriginalFilename(); String newName= UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf(".")); Mapresult=new HashMap<>(); try { file.transferTo(new File(folder,newName)); String url=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/file/"+newName; result.put("status","ok"); result.put("url",url); } catch (IOException e) { result.put("status","failed"); result.put("msg",e.getMessage()); } return result; }}
上面的controller会返回给用户一个类似于http://localhost:8080/file/xxx.jpg
@Configurationpublic class MyWebMvcConfig extends WebMvcConfigurationSupport { @Value("${web.upload-path}") private String uploadFilePath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/file/**").addResourceLocations("file:"+uploadFilePath); //这句不要忘了,否则项目默认静态资源映射会失效 registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); super.addResourceHandlers(registry); }}
@PostMapping("uploadMul")public Map upload(MultipartFile[] files, HttpServletRequest request){ Mapresult=new HashMap<>(); int count=0; List
跨域请求在后端配置即可
可以全局放行,也可以只针对某些地址允许import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource;import org.springframework.web.filter.CorsFilter;@Configurationpublic class GlobalCorsConfig { @Bean public CorsFilter corsFilter(){ CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.setAllowCredentials(false); corsConfiguration.addAllowedMethod("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addExposedHeader("*"); UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource(); configurationSource.registerCorsConfiguration("/**",corsConfiguration); return new CorsFilter(configurationSource); }}
转载地址:http://mezdf.baihongyu.com/