有时候我们经常遇到上传到本地,在回显的时候找不到资源路径显示为(项目路径+图片路径)导致图片路径不正确
次介绍是根据springboot做为前提的配置
首先配置文件中添加
file.staticAccessPath=/upload/** file.uploadFolder=E:/upload/ file.url=/upload/ |
添加映射成服务的ben
/** * 图片绝对地址与虚拟地址映射 */ @Configuration public class WebConfigurer extends WebMvcConfigurerAdapter { @Value("${file.staticAccessPath}") private String staticAccessPath; @Value("${file.uploadFolder}") private String uploadFolder; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder); } } |
后台代码使用
//上传真实地址 @Value("${file.uploadFolder}") private String uploadFolder; //项目地址 @Value("${webSocketServerIp}") private String webSocketServerIp; //映射地址 @Value("${file.url}") private String url; @RequestMapping(value = "/upload") @ResponseBody public Map<String, Object> upload(@RequestParam(value = "files", required = false) List<MultipartFile> files, HttpServletRequest request) { Map<String, Object> resultMap = Maps.newHashMap(); String imgUrls[] = new String[files.size()]; try { if (files != null && files.size() > 0) { for (int i = 0; i < files.size(); i++) { String url1=webSocketServerIp+url; String filezurl = FileUtil.uploadFile(uploadFolder, files.get(i)); imgUrls[i] = url1+filezurl; } } resultMap.put("errno", 0); resultMap.put("data", imgUrls); return resultMap; }catch (Exception e){ resultMap.put("errno", 0); return resultMap; } } public static String uploadFile(String path, MultipartFile file) throws Exception{ File file1=new File(path); if(!file1.exists()){ file1.mkdirs(); } String fileName = file.getOriginalFilename(); String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 文件上传后的路径 fileName = UUID.randomUUID() + suffixName; String uppath=path+fileName; File targetFile = new File(uppath); file.transferTo(targetFile); return fileName; }
imgUrls里面保存的即为项目地址+映射路径后的图片地址 jsp页面渲染后即可读到正确的图片地址.tomcat不用配置图片映射 至此使用结束 |