解决图片上传服务器,重启服务器不能获取图片问题

版权声明:原创作品转载必须标明出处,谢谢配合! https://blog.csdn.net/qq_38704184/article/details/86741080

图片上传服务器后,我们会发现图片被我们定义的名字后,Tomcat会自动给图片名称再次改变,为的就是防止名称冲突问题,但是我们重启Tomcat后,会发现不能获取我们已经长传的图片了,

在最近的独自写项目中,查找各种资料终于解决了 

public Map<String, Object> changeTouXiang(String username,HttpServletRequest request) {
	  /*MultipartResolver resolver= new
			  CommonsMultipartResolver(request.getSession().getServletContext());
	  MultipartHttpServletRequest multipartHttpRequest =
	  resolver.resolveMultipart(request);*/
	  MultipartHttpServletRequest multipartHttpRequest =(MultipartHttpServletRequest) request;
	  // 获取上传文件 
	  MultipartFile file = multipartHttpRequest.getFile("imageFile"); 
	  // 获取上传文件的原始名 
	  String newSeffor =  UUID.randomUUID().toString();
	  String fileName =
			  newSeffor+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); 
	  // 获取服务器的路径
	  String path = request.getServletContext().getRealPath("/images/");
	  try {
		file.transferTo(new File("D:\\upload",fileName));
	} catch (IllegalStateException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	  userServer.updateImageByUsername(username, fileName);
	  HashMap<String, Object> map = new  HashMap<String, Object>(); 
	  map.put("filePath",fileName); 
	 return map; 
	 }

代码中可以看出来,我们获取前端指定的图片,利用UUID为图片重新分配名称,然后将图片复制到我们指定的D盘下面去,表面上我们没有利用到IO流操作,实际上内部封装IO流。

进入server下的server.xml中,添加以下代码:

 意思是将Tomcat修改后的图片存储在D:\upload下,我们前端利用

 即可以获取图片,

重启服务器后还可以自动获取图片,问题解决

猜你喜欢

转载自blog.csdn.net/qq_38704184/article/details/86741080