文件存到本地---SSM配置Ueditor实现图片的上传

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

1.修改文件输出的位置

[html]  view plain  copy
  1. @Controller  
  2. public class ImageController {  
  3.       
  4.     @Autowired  
  5.     private ImageService imageService;  
  6.       
  7.       
  8.      @RequestMapping(value="/uploadImage",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)    
  9.      @ResponseBody  
  10.         public Map<String,Object> uploadFile(@RequestParam(value = "upfile"required = false) MultipartFile file,     
  11.                 HttpServletRequest request,HttpServletResponse response){   
  12.          Map<String,Object> map = new HashMap<String, Object>();  
  13.          String realName = null;  
  14.          String uuidName = null;  
  15.          String realPath = null;  
  16.            
  17.          try {  
  18.              Image image  = new Image();  
  19.              //文件原来的名称  
  20.              realName = getRealName(file.getOriginalFilename());  
  21.              //得到这个文件的uuidname  
  22.              uuidName = this.getUUIDFileName(file.getOriginalFilename());  
  23.              //图片保存的工程  
  24.             // realPath = request.getServletContext().getRealPath("/images");  
  25.              //真实路径  
  26.             // String roolPath = request.getSession().getServletContext().getRealPath("/");  
  27.                
  28.              //这里测试的是 把图片不存在 发布目录下  
  29.              realPath  = "F:\\schoolproject\\images";  
  30.                
  31.               
  32.              image.setName(realName);  
  33.              image.setUrl(realPath);  
  34.              image.setUuidname(uuidName);  
  35.               
  36.              //得到文件的输入流  
  37.             InputStream in = new BufferedInputStream(file.getInputStream());  
  38.               
  39.             OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(realPath,uuidName)));  
  40.               
  41.             IOUtils.copy(in, out);  
  42.             in.close();  
  43.             out.close();  
  44.               
  45.             int flag = imageService.insertImage(image);  
  46.               
  47.             if(flag!=0){  
  48.              map.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容  
  49.              map.put("url","/images/"+uuidName);         //能访问到你现在图片的路径 这里  
  50.              map.put("title","");  
  51.              map.put("original","realName" );           
  52.             }  
  53.         } catch (IOException e) {  
  54.             // TODO Auto-generated catch block        
  55.             map.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息  
  56.             map.put("url","");  
  57.             map.put("title", "");  
  58.             map.put("original", "");          
  59.             e.printStackTrace();  
  60.         }          
  61.          return map;  
  62.      }  
  63.        
  64.        
  65.        
  66.      private String getExtName(String s, char split) {    
  67.            int i = s.lastIndexOf(split);    
  68.            int leg = s.length();    
  69.            return i > 0 ? (i + 1) == leg ? " " : s.substring(i+1, s.length()) : " ";    
  70.        }    
  71.        
  72.      private String getUUIDFileName(String fileName){    
  73.             UUID uuid = UUID.randomUUID();    
  74.             StringBuilder sb = new StringBuilder(100);    
  75.             sb.append(uuid.toString()).append(".").append(this.getExtName(fileName, '.'));    
  76.             return sb.toString();    
  77.         }  
  78.        
  79.      private String getRealName(String originalName){  
  80.          //System.out.println(originalName.contains("."));  
  81.            
  82.          if(originalName.contains(".")){  
  83.         String [] as = originalName.split("\\.");  
  84.         //System.out.println(as[0]);  
  85.         return as[0];  
  86.          }else {  
  87.             return originalName;  
  88.         }  
  89.            
  90.      }  
  91.       
  92.       
  93. }  
  在这我们可以看到,我将图片存在了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>标签中添加下面的一句话

[html]  view plain  copy
  1. <Context docBase="F:\schoolproject\images" path="/SpringMVCDemo/images" reloadable="false"/>  
意思应该很容易理解!!!!

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

原文链接:http://blog.csdn.net/qq_34292044/article/details/72453119

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值