1. 程式人生 > >Ueditor抓取遠端圖片

Ueditor抓取遠端圖片

action:catchimage
對應js:ueditor.all.js中的catchremoteimage方法
原理:通過後臺傳遞的新url地址替換原本的url地址
過程:
1、在呼叫的ueditor的頁面js中將遠端圖片的地址重寫:
var ue = UE.getEditor('webview',{initialFrameHeight:300,initialFrameWidth:600 });
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
   if (action == 'uploadimage' || action == 'uploadfile' ) {
       return CommonJs.getBasePath() +'common/ueditorUploadFile.json?floder=yimifin/advertise/';
   }else if(action == 'catchimage'){//重定義遠端檔案上傳地址
    return CommonJs.getBasePath() +'common/ueditorUploadRemoteFile.json?floder=yimifin/advertise/';
   } else {
       return this._bkGetActionUrl.call(this, action);
   }
};
// 複寫UEDITOR的getContentLength方法 解決富文字編輯器中一張圖片或者一個檔案只能算一個字元的問題,可跟資料庫字元的長度配合使用
UE.Editor.prototype._bkGetContentLength = UE.Editor.prototype.getContentLength;
UE.Editor.prototype.getContentLength = function(){
   return this.getContent().length;
}
2、修改相應的後臺程式碼:注意返回資料的格式
public void ueditorUploadRemoteFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String floder = request.getParameter("floder");
    String[] sources = request.getParameterValues("source[]");
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("list", fileUploadService.uploadRemoteFileToQiNiu(sources, floder));
    jsonObject.put("state", "SUCCESS");
    response.getWriter().print(jsonObject);
    }


public List<Map<String,Object>> uploadRemoteFileToQiNiu(String[] sources, String uploadRootPath)
throws Exception {
// TODO Auto-generated method stub
// 永遠儲存新的檔名
        String newFileName = null;
        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
        for(int i = 0 ; i < sources.length ; i++){
        String source = sources[i];
        if(StringUtils.hasLength(source)){
        File dirFile = new File(source);
                // 如果當前路徑不存在,那麼建立
                if (!dirFile.exists()) {
                dirFile.mkdirs();
                }
                URL url = new URL(source);  
        HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection();
        httpUrl.connect();
             // 上傳檔案
                try {
                    // 取出字尾名
                    String hzm = source.substring(source.lastIndexOf("."),source.length());
                    // 檔案上傳
                    newFileName = UUID.randomUUID() + hzm;

                    InputStream inputStream = httpUrl.getInputStream();

   //上傳檔案

                    Map<String,Object> map = new HashMap<String,Object>();
                    map.put("source", source);
                    map.put("url", fileShowPrefixPath+fileUploadRootPath+newFileName);
                    map.put("state", "SUCCESS");
                    result.add(map);
                } catch (IllegalStateException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
        }
        
        // 如果檔名為null,那麼返回空
        return result;
}