首先:解释一下原因【个人理解】:因为图片只是临时存入到服务器中,重启之后,临时文件会被删除,所以重启之后图片会被删除,再看页面,图片不能显示。
解决方法: 1.配置静态资源映射package com.hl.configuration; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.servlet.Filter; @Configuration public class ImgConfigurer implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/upload/**"). //服务器文件路径 addResourceLocations("file:/" + "C://upload/"); //映射的本地文件路径 } }2.在配置文件中配置路径 [要注意rootPath:与值中间必须有一个空格(yml配置文件规则)]
file: #本地路径 rootPath: C://upload/ #服务器路径 :获取方式request.getServletContext().getRealPath("/upload/"); # rootPath: 服务器路径/upload/3.在上传方法中的使用
@Controller
@RequestMapping("/upload")
public class LayEditController {
//配置文件中配置本地映射路径/服务器路径
@Value("${file.rootPath}")
private String rootPath;
//上传文件
@ResponseBody
@RequestMapping(value = "/uploadFile")
public String uploadFile(HttpServletRequest request,@Param("file") MultipartFile file) throws IOException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
String res = sdf.format(new Date());
//服务器上使用
//如果在配置文件中已经配置,可以不用写
// String rootPath =request.getServletContext().getRealPath("/upload/");//target的目录
//本地使用
// String rootPath ="/C:/upload/";
//原始名称
String originalFilename = file.getOriginalFilename();
//新的文件名称
String newFileName = res+originalFilename.substring(originalFilename.lastIndexOf("."));
//创建年月文件夹
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR)
+ File.separator + (date.get(Calendar.MONTH)+1));
//新文件
File newFile = new File(rootPath+File.separator+dateDirs+File.separator+newFileName);
//判断目标文件所在的目录是否存在
if(!newFile.getParentFile().exists()) {
//如果目标文件所在的目录不存在,则创建父目录
newFile.getParentFile().mkdirs();
}
System.out.println(newFile); //可打印出文件路径
//将内存中的数据写入磁盘
file.transferTo(newFile);
//完整的url
String fileUrl = "/upload/"+date.get(Calendar.YEAR)+ "/"+(date.get(Calendar.MONTH)+1)+ "/"+ newFileName;
Map
Map
//0表示成功,1失败
map.put("code",0);
//提示消息
map.put("msg","上传成功");
map.put("data",map2);
//图片url
map2.put("src",fileUrl);
//图片名称,这个会显示在输入框里
map2.put("title",newFileName);
String result = new JSonObject(map).toString();
return result;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)