關於富文本編輯器ueditor(jsp版)上傳文件到阿里雲OSS的簡單實例,適合新手

關於富文本編輯器ueditor(jsp版)上傳文件到阿里雲OSS的簡單實例,適合新手

 

       本人菜鳥一枚,最近公司有需求要用到富文本編輯器,我選擇的是百度的ueditor富文本編輯器,閒話很少說,進入正題:
一:ueditor的下載及安裝以及OSS的下載及引入我就不詳細說了,這裏說下要注意的幾點:   
     1,ueditor下載地址http://ueditor.baidu.com/website/download.html,記得下載的是開發版-完整源碼版
     2,oss-Java-sdk下載地址:https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/internal/oss/0.0.4/assets/sdk/aliyun_java_sdk_20160510.zip?spm=5176.doc32009.2.1.0lQMOb&file=aliyun_java_sdk_20160510.zip
     3,至於ueditor安裝及初始化方法,自行百度。OSS引入包放如項目lib文件夾便可開始使用html

     4,此實例只新增UploadOSSUtil.java及修改BinaryUploader.java便可,其餘地方不用作任何修改
二:安裝完成後須要更改的地方:        
     1,打開包com.baidu.ueditor,upload,新建class文件:UploadOSSUtil.java內容以下前端

 

[java]  view plain  copy
 
  1. /** 
  2.  * 上傳到阿里雲:xhj 
  3.  *  
  4.  *  
  5.  */  
  6. import java.io.FileNotFoundException;  
  7. import java.io.InputStream;   
  8. import com.aliyun.oss.OSSClient;   
  9.   
  10. public class UploadOSSUtil {  
  11.  public UploadOSSUtil(){}  
  12.    
  13.  public static void uploadImgAliyun(InputStream inputStream ,String fileName)  
  14.  throws FileNotFoundException{  
  15.   String accesskeyId = "***你的阿里雲accesskeyId***" ;  
  16.   String accessKeySecret = "***你的阿里雲accessKeySecret***" ;  
  17.   String endpoint = "http://oss-cn-shenzhen.aliyuncs.com" ;  
  18.   String bucketName = "***你的bucketName***" ;  
  19.   OSSClient client = new OSSClient(endpoint,accesskeyId,accessKeySecret);  
  20.   //此處"xxxx/yyyy/"+fileName,表示上傳至阿里雲中xxxx文件夾下的yyyy文件夾中,請修改成本身的路徑便可  
  21.   client.putObject(bucketName, "xxxx/yyyy/"+fileName, inputStream);  
  22.   client.shutdown();  
  23.  }  
  24. }  

 

 

 

 

修改同目錄下的BinaryUploader.java的save()java

 

[java]  view plain  copy
 
  1. public static final State save(HttpServletRequest request,  
  2.    Map<String, Object> conf) {  
  3.   FileItemStream fileStream = null;  
  4.   boolean isAjaxUpload = request.getHeader( "X_Requested_With" ) != null;  
  5.   
  6.   
  7.   
  8.   if (!ServletFileUpload.isMultipartContent(request)) {  
  9.    return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT);  
  10.   }  
  11.   
  12.   ServletFileUpload upload = new ServletFileUpload(  
  13.     new DiskFileItemFactory());  
  14.   
  15.         if ( isAjaxUpload ) {  
  16.             upload.setHeaderEncoding( "UTF-8" );  
  17.         }  
  18.   
  19.   try {  
  20.    FileItemIterator iterator = upload.getItemIterator(request);  
  21.   
  22.    while (iterator.hasNext()) {  
  23.     fileStream = iterator.next();  
  24.   
  25.     if (!fileStream.isFormField())  
  26.      break;  
  27.     fileStream = null;  
  28.    }  
  29.   
  30.    if (fileStream == null) {  
  31.     return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA);  
  32.    }  
  33.   
  34.    String savePath = (String) conf.get("savePath");  
  35.    String originFileName = fileStream.getName();  
  36.    String suffix = FileType.getSuffixByFilename(originFileName);  
  37.   
  38.    originFileName = originFileName.substring(0,  
  39.      originFileName.length() - suffix.length());  
  40.    savePath = savePath + suffix;  
  41.   
  42.    long maxSize = ((Long) conf.get("maxSize")).longValue();  
  43.   
  44.    if (!validType(suffix, (String[]) conf.get("allowFiles"))) {  
  45.     return new BaseState(false, AppInfo.NOT_ALLOW_FILE_TYPE);  
  46.    }  
  47.   
  48.    savePath = PathFormat.parse(savePath, originFileName);  
  49.   
  50.    String physicalPath = (String) conf.get("rootPath") + savePath;  
  51.      
  52.    InputStream is = fileStream.openStream();  
  53.      
  54.    /** 
  55.     * 上傳到阿里雲:xhj添加 
  56.     */  
  57.    //*******************開始***********************  
  58.    String fileName = new StringBuffer().append(new Date().getTime()).append(fileStream.getName().substring(fileStream.getName().indexOf("."))).toString();  
  59.    State storageState = null;  
  60.    try {  
  61.       
  62.     new UploadOSSUtil();  
  63.     UploadOSSUtil.uploadImgAliyun(is,fileName);  
  64.     storageState = StorageManager.saveFileByInputStream(is,  
  65.       physicalPath, maxSize);  
  66.     storageState.putInfo("state""SUCCESS");// UEDITOR的規則:不爲SUCCESS則顯示state的內容  
  67.     //注意:下面的url是返回到前端訪問文件的路徑,請自行修改  
  68.     storageState.putInfo("url","http://XXXXXX.oss-cn-shenzhen.aliyuncs.com/images/companyNewsImages/" + fileName);  
  69.     storageState.putInfo("title", fileName);  
  70.     storageState.putInfo("original", fileName);  
  71.    } catch (Exception e) {  
  72.     // TODO: handle exception  
  73.     System.out.println(e.getMessage());  
  74.     storageState.putInfo("state""文件上傳失敗!");  
  75.     storageState.putInfo("url","");  
  76.     storageState.putInfo("title""");  
  77.     storageState.putInfo("original""");  
  78.              //System.out.println("文件 "+fileName+" 上傳失敗!");  
  79.    }  
  80.      
  81.      
  82.      
  83.    //********************結束**********************  
  84.      
  85.    is.close();  
  86.    /*if (storageState.isSuccess()) {  
  87.     storageState.putInfo("url", PathFormat.format(savePath));  
  88.     storageState.putInfo("type", suffix);  
  89.     storageState.putInfo("original", originFileName + suffix);  
  90.    }*/  
  91.    //System.out.println("storageState="+storageState);  
  92.    return storageState;  
  93.   } catch (FileUploadException e) {  
  94.    return new BaseState(false, AppInfo.PARSE_REQUEST_ERROR);  
  95.   } catch (IOException e) {  
  96.   }  
  97.   return new BaseState(false, AppInfo.IO_ERROR);  
  98.  }  

 

 

 

 

 

微信公衆號【黃小斜】大廠程序員,互聯網行業新知,終身學習踐行者。關注後回覆「Java」、「Python」、「C++」、「大數據」、「機器學習」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「筆試」、「面試」、「面經」、「計算機基礎」、「LeetCode」 等關鍵字能夠獲取對應的免費學習資料。 程序員

 

 

                     

 

若有疑問,歡迎提問。web

相關文章
相關標籤/搜索