1. 程式人生 > >ueditor上傳檔案七牛雲

ueditor上傳檔案七牛雲

準備工作

ueditor外掛:百度雲下載資源: https://pan.baidu.com/s/1EL_hoJGTyZEf49WX0KQfvA

Ueditor下載官網https://ueditor.baidu.com/website/download.html

第一 匯入Maven專案中

第二 建立訪問編輯器的controller

package cn.itsource.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.qiniu.util.Auth;
@Controller
public class IndexController {
//訪問文字編輯頁面
@RequestMapping("/ueditor")
public String ueditorPage() {
return "ueditor";
}
}

第三 ueditor前臺

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>ueditor demo</title>
</head>
<body>
<!-- 載入編輯器的容器 -->
<script style="height: 500px; width: 600px" id="container"
                        name="content" type="text/plain">
        這裡寫你的初始化內容
    </script>
<!-- 配置檔案 -->
<script type="text/javascript" src="/static/ueditor/ueditor.config.js"></script>
<!-- 編輯器原始碼檔案 -->
<script type="text/javascript" src="/static/ueditor/ueditor.all.js"></script>
<!-- 例項化編輯器 -->
<script type="text/javascript">
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
    if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') {
        return '/upload/uploadimages';
    } else if (action == 'uploadvideo') {
        return '';
    } else {
        return this._bkGetActionUrl.call(this, action);
    }
}
var ue = UE.getEditor('container');
<!--自定義編輯框功能圖示-->
/* var ue = UE.getEditor('container', {
    toolbars: [
        ['fullscreen', 'source', 'undo', 'redo', 'bold']
    ],
    autoHeightEnabled: true,
    autoFloatEnabled: true
}); */
</script>
</body>
</html>

第四 配置application.yml/等於application.xml,注意結構層次

#設定埠
server:
  port:8080
#設定上傳檔案大小
spring:
  http:
    multipart:
      maxFileSize: 100Mb
      maxRequestSize: 1000Mb
  #設定檢視解析器
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
#日誌列印
logging:
  level:
    cn:
      itsource: DEBUG
#七牛雲配置 上傳憑證AccessKey,SecretKey和Bucket
qiniu:     
     accessKey: P63Fl_oUacfVwpMGuiR826rc7byWqwqyy_OBIVm3
     secretKey: yL_Uk2M3b68aM96ZC2dW-F8eir0R2Vuq5vE9wItz
     domain: http://pi5zfw3xm.bkt.clouddn.com/
     bucket: testdemo

第五 後臺處理

// 獲取上傳憑證
@RequestMapping("/uploadimages")
@ResponseBody
public Object uploadImage(MultipartFile upfile) {
    // ...生成上傳憑證,然後準備上傳
    Map<String,Object> map=new HashMap<>();
    //上傳七牛雲
    // 構造一個帶指定Zone物件的配置類
    Configuration cfg = new Configuration(Zone.zone2());
    // ...其他引數參考類註釋
    UploadManager uploadManager = new UploadManager(cfg);
    String fileName=upfile.getOriginalFilename();//xxx.jpg
    String uuid=UUID.randomUUID().toString();//abcd
    String newFileName=uuid+fileName.substring(fileName.lastIndexOf("."));//新的檔名
    Auth auth = Auth.create(accessKey, secretKey);
    String upToken = auth.uploadToken(bucket);
try{
    Response response = uploadManager.put(upfile.getBytes(), newFileName, upToken);
    // 解析上傳成功的結果
    /* DefaultPutRet putRet = new Gson().fromJson(response.bodyString(),         
      DefaultPutRet.class);
        System.out.println(putRet.key);
        System.out.println(putRet.hash);*/
        map.put("state","SUCCESS");
        map.put("url",domain+newFileName);
        map.put("title",newFileName);
        map.put("original",newFileName);
    }catch(Exception ex){
        System.out.println("上傳失敗"+ex.getMessage());
        map.put("state","ERROR");
        map.put("url","");
        map.put("title","");
        map.put("original","");
    }
        return map;
}

第六 注意:其實百度的ueditor官網是提供了上傳檔案到七牛雲的官方文件的,文件最後面有介紹,網上修改ueditor原始碼不建議採用;

如何自定義請求地址

本文件說明修改請求地址的方法。

應用場景

ueditor 1.4.2+ 推薦使用唯一的請求地址,通過GET引數action指定不同請求型別。 但很多使用者都希望使用自己寫好的上傳地址,下面提供一種解決方法: 由於所有ueditor請求都通過editor物件的getActionUrl方法獲取請求地址,可以直接通過複寫這個方法實現,例子如下:s._bkGetActionUrl.call(this, action);

UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
    if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') {
        return 'http://a.b.com/upload.php';
    } else if (action == 'uploadvideo') {
        return 'http://a.b.com/video.php';
    } else {
        return this._bkGetActionUrl.call(this, action);
    }}

action型別以及說明

  • uploadimage://執行上傳圖片或截圖的action名稱
  • uploadscrawl://執行上傳塗鴉的action名稱
  • uploadvideo://執行上傳視訊的action名稱
  • uploadfile://controller裡,執行上傳視訊的action名稱
  • catchimage://執行抓取遠端圖片的action名稱
  • listimage://執行列出圖片的action名稱
  • listfile://執行列出檔案的action名稱