图片上传服务器后,我们会发现图片被我们定义的名字后,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下,我们前端利用
即可以获取图片,
重启服务器后还可以自动获取图片,问题解决