SSM配置Ueditor实现图片的上传<三>

来源:互联网 发布:手机电池信息校正软件 编辑:程序博客网 时间:2024/06/06 07:27

上一篇博客我们实现的图片自定义上传是将图片是上传到tomcat的目录之下,这样会出现一个问题,当你重新部署你的工程的时候,tomcat会将你的图片全部都清空,那么这样你将图片存到数据库当中将会变的毫无意义!接下来实现如何将图片存取在非tomcat的目录之下!!!

1.修改文件输出的位置

@Controllerpublic class ImageController {@Autowiredprivate ImageService imageService;     @RequestMapping(value="/uploadImage",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)   @ResponseBody    public Map<String,Object> uploadFile(@RequestParam(value = "upfile", required = false) MultipartFile file,               HttpServletRequest request,HttpServletResponse response){  Map<String,Object> map = new HashMap<String, Object>(); String realName = null; String uuidName = null; String realPath = null;  try { Image image  = new Image(); //文件原来的名称 realName = getRealName(file.getOriginalFilename()); //得到这个文件的uuidname uuidName = this.getUUIDFileName(file.getOriginalFilename()); //图片保存的工程// realPath = request.getServletContext().getRealPath("/images"); //真实路径// String roolPath = request.getSession().getServletContext().getRealPath("/");  //这里测试的是 把图片不存在 发布目录下 realPath  = "F:\\schoolproject\\images";  image.setName(realName); image.setUrl(realPath); image.setUuidname(uuidName); //得到文件的输入流InputStream in = new BufferedInputStream(file.getInputStream());OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(realPath,uuidName)));IOUtils.copy(in, out);in.close();out.close();int flag = imageService.insertImage(image);if(flag!=0){ map.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容 map.put("url","/images/"+uuidName);         //能访问到你现在图片的路径 这里 map.put("title",""); map.put("original","realName" );         }} catch (IOException e) {// TODO Auto-generated catch blockmap.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息        map.put("url","");        map.put("title", "");        map.put("original", "");            e.printStackTrace();}  return map; }    private String getExtName(String s, char split) {         int i = s.lastIndexOf(split);         int leg = s.length();         return i > 0 ? (i + 1) == leg ? " " : s.substring(i+1, s.length()) : " ";     }    private String getUUIDFileName(String fileName){      UUID uuid = UUID.randomUUID();      StringBuilder sb = new StringBuilder(100);      sb.append(uuid.toString()).append(".").append(this.getExtName(fileName, '.'));      return sb.toString();  }  private String getRealName(String originalName){ //System.out.println(originalName.contains("."));  if(originalName.contains(".")){String [] as = originalName.split("\\.");//System.out.println(as[0]);return as[0]; }else {return originalName;}  }}
 在这我们可以看到,我将图片存在了F:\\schoolproject\\images 这个目录下,但是图片显示请求的url任然是map中url这个属性也就是:http://localhost:8080/SpringMVCDemo/images/图片名称,接下来我们就只要修改server.xml文件了!!!

2.修改server.xml文件

到你的eclipse工作目录中找到server.xml文件,我的server.xml文件所在的目录如下:

F:\schoolproject\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf,在<Host></Host>标签中添加下面的一句话

<Context docBase="F:\schoolproject\images" path="/SpringMVCDemo/images" reloadable="false"/>
意思应该很容易理解!!!!

这样就能访问到你非tomcat目录下的文件了!!!它这里做了个映射而已!

原创粉丝点击