springboot项目图片不显示的问题

Posted ControlStu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot项目图片不显示的问题相关的知识,希望对你有一定的参考价值。

首先确认你的图片路径是对的
那么大概率就是浏览器缓存的原因,因为页面直接用的是缓存的旧数据,所以显示不出来。
再不修改浏览器设置的情况下,最简单的办法就是直接项目在pom.xml文件里引入devtools
如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
devtools是热部署的,自动会禁止浏览器缓存。
启动项目后,在idea里改代码,保存后不用重启项目,一般在10s内会自动更新。

SpringBoot vue图片上传不能立即回显问题解决

最开始项目是放在eclipse之中的、springboot项目默认把静态的文件加载到classpath的目录下的。而此时我们上传的图片并没有传入启动了的项目当中去、所以明明路径是对的、却访问不了、在项目重新启动之后项目会打成新的jar包、这个时候上一次上传的图片才会正常显示。

解决方法:配置静态资源路径访问。配置虚拟路径。

后端上传文件代码:

@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception 
		if (file.isEmpty()) 
			throw new EIException("上传文件不能为空");
		
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File upload = new File("D:/work/");
		if(!upload.exists()) 
		    upload.mkdirs();
		
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload+"/"+fileName);

		file.transferTo(dest);
		if(StringUtils.isNotBlank(type) && type.equals("1")) 
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) 
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			 else 
				configEntity.setValue(fileName);
			
			configService.insertOrUpdate(configEntity);
		
		return R.ok().put("file", fileName);
	
File upload = new File("D:/work/");这里路径建议在yml里面配置、然后读取、因为我这是简单的毕业设计项目、所以就直接写死了。

配置WebMvcConfigurationSupport重写addResourceHandlers即可实现。

/**
	 * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法
	 */
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
		registry.addResourceHandler("/**")
        .addResourceLocations("classpath:/resources/")
        .addResourceLocations("classpath:/static/")
		.addResourceLocations("classpath:/upload/")
		.addResourceLocations("classpath:/admin/")
        .addResourceLocations("classpath:/front/")
        .addResourceLocations("classpath:/public/");
		registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/work/");
		super.addResourceHandlers(registry);
    

 问题解决。简单记录一下。

以上是关于springboot项目图片不显示的问题的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot vue图片上传不能立即回显问题解决

SpringBoot映射虚拟图片路径

上传的图片不显示在网页上

SpringBoot上传图片

两个SpringBoot项目之间调用

springboot项目图片上传,回显;使用外部静态资源路径回显图片