1. 程式人生 > >檔案存到本地---SSM配置Ueditor實現圖片的上傳

檔案存到本地---SSM配置Ueditor實現圖片的上傳

一般我們實現的圖片自定義上傳是將圖片是上傳到tomcat的目錄之下,這樣會出現一個問題,當你重新部署你的工程的時候,tomcat會將你的圖片全部都清空,那麼這樣你將圖片存到資料庫當中將會變的毫無意義!接下來實現如何將圖片存取在非tomcat的目錄之下!!!

1.修改檔案輸出的位置

  1. @Controller  
  2. public class ImageController {  
  3.     @Autowired  
  4.     private ImageService imageService;  
  5.      @RequestMapping(value="/uploadImage",method = 
    RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)    
  6.      @ResponseBody  
  7.         public Map<String,Object> uploadFile(@RequestParam(value = "upfile"required = false) MultipartFile file,     
  8.                 HttpServletRequest request,HttpServletResponse response){   
  9.          Map<
    String,Object>map = new HashMap<String, Object>();  
  10.          String realName = null;  
  11.          String uuidName = null;  
  12.          String realPath = null;  
  13.          try {  
  14.              Image image  = new Image();  
  15.              //檔案原來的名稱  
  16.              realName = getRealName(file.getOriginalFilename());  
  17.              //得到這個檔案的uuidname  
  18.              uuidName = this.getUUIDFileName(file.getOriginalFilename());  
  19.              //圖片儲存的工程  
  20.             // realPath = request.getServletContext().getRealPath("/images");  
  21.              //真實路徑  
  22.             // String roolPath = request.getSession().getServletContext().getRealPath("/");  
  23.              //這裡測試的是 把圖片不存在 釋出目錄下  
  24.              realPath  = "F:\\schoolproject\\images";  
  25.              image.setName(realName);  
  26.              image.setUrl(realPath);  
  27.              image.setUuidname(uuidName);  
  28.              //得到檔案的輸入流  
  29.             InputStream in = new BufferedInputStream(file.getInputStream());  
  30.             OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(realPath,uuidName)));  
  31.             IOUtils.copy(in, out);  
  32.             in.close();  
  33.             out.close();  
  34.             int flag = imageService.insertImage(image);  
  35.             if(flag!=0){  
  36.              map.put("state", "SUCCESS");// UEDITOR的規則:不為SUCCESS則顯示state的內容  
  37.              map.put("url","/images/"+uuidName);         //能訪問到你現在圖片的路徑 這裡  
  38.              map.put("title","");  
  39.              map.put("original","realName" );           
  40.             }  
  41.         } catch (IOException e) {  
  42.             // TODO Auto-generated catch block        
  43.             map.put("state", "檔案上傳失敗!"); //在此處寫上錯誤提示資訊,這樣當錯誤的時候就會顯示此資訊  
  44.             map.put("url","");  
  45.             map.put("title", "");  
  46.             map.put("original", "");          
  47.             e.printStackTrace();  
  48.         }          
  49.          return map;  
  50.      }  
  51.      private String getExtName(String s, char split) {    
  52.            int i = s.lastIndexOf(split);    
  53.            int leg = s.length();    
  54.            return i > 0 ? (i + 1) == leg ? " " : s.substring(i+1, s.length()) : " ";    
  55.        }    
  56.      private String getUUIDFileName(String fileName){    
  57.             UUID uuid = UUID.randomUUID();    
  58.             StringBuilder sb = new StringBuilder(100);    
  59.             sb.append(uuid.toString()).append(".").append(this.getExtName(fileName, '.'));    
  60.             return sb.toString();    
  61.         }  
  62.      private String getRealName(String originalName){  
  63.          //System.out.println(originalName.contains("."));  
  64.          if(originalName.contains(".")){  
  65.         String [] as = originalName.split("\\.");  
  66.         //System.out.println(as[0]);  
  67.         return as[0];  
  68.          }else {  
  69.             return originalName;  
  70.         }  
  71.      }  
  72. }  
在這我們可以看到,我將圖片存在了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>標籤中新增下面的一句話

  1. <ContextdocBase="F:\schoolproject\images"path="/SpringMVCDemo/images"reloadable="false"/>
意思應該很容易理解!!!!

這樣就能訪問到你非tomcat目錄下的檔案了!!!它這裡做了個對映而已!

原文連結:http://blog.csdn.net/qq_34292044/article/details/72453119