集成TinyMCE富文本編輯器

若依的基礎上集成TinyMCE富文本編輯器

前端bootstrap

TinyMCE官網鏈接
TinyMCE所需靜態資源下載鏈接

開源項目-若依鏈接

將TinyMCE靜態資源包放入項目中;
代碼引入css:

<!-- 引入TinyMCE CSS --><link th:href="@{/ajax/libs/tinymce/js/tinymce/skins/ui/oxide/skin.min.css}" rel="stylesheet"/>

代碼引入js:

    <!-- 引入TinyMCE JavaScript --><script th:src="@{/ajax/libs/tinymce/js/tinymce/tinymce.min.js}"></script><script th:src="@{/ajax/libs/tinymce/langs/zh-Hans.js}"></script>

html代碼

 <div class="form-group"><label class="col-sm-3 control-label">詳細內容:</label><div class="col-sm-8"><textarea class="form-control" id="mytextarea"  rows="10" cols="50"></textarea></div></div>

js部分

//上傳圖片方法const example_image_upload_handler = (blobInfo, progress) => new Promise((resolve, reject) => {const xhr = new XMLHttpRequest();xhr.withCredentials = false;xhr.open('POST', ctx + 'common/upload');xhr.upload.onprogress = (e) => {progress(e.loaded / e.total * 100);};xhr.onload = () => {if (xhr.status === 403) {reject({ message: 'HTTP Error: ' + xhr.status, remove: true });return;}if (xhr.status < 200 || xhr.status >= 300) {reject('HTTP Error: ' + xhr.status);return;}const json = JSON.parse(xhr.responseText);if (!json || typeof json.url != 'string') {reject('Invalid JSON: ' + xhr.responseText);return;}resolve(json.url);};xhr.onerror = () => {reject('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);};const formData = new FormData();formData.append('file', blobInfo.blob(), blobInfo.filename());xhr.send(formData);});//tinymce初始化
tinymce.init({selector: '#mytextarea',language: 'zh-Hans',//中文顯示mobile: {theme: 'mobile',plugins: ['autosave', 'lists', 'autolink'],toolbar: ['undo', 'bold', 'italic', 'styleselect']},setup: function (editor) {editor.on('init', function () {var viewportMeta = document.createElement('meta');viewportMeta.setAttribute('name', 'viewport');viewportMeta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(viewportMeta);});},plugins: 'print preview searchreplace autolink directionality visualblocks visualchars fullscreen image link media template code codesample table charmap hr pagebreak nonbreaking anchor insertdatetime advlist lists wordcount imagetools textpattern help emoticons autosave bdmap indent2em autoresize lineheight formatpainter axupimgs',toolbar: 'code undo redo restoredraft | cut copy paste pastetext | forecolor backcolor bold italic underline strikethrough link anchor | alignleft aligncenter alignright alignjustify outdent indent | \styleselect formatselect fontselect fontsizeselect | bullist numlist | blockquote subscript superscript removeformat | \table image media charmap emoticons hr pagebreak insertdatetime print preview | fullscreen | bdmap indent2em lineheight formatpainter axupimgs',fontsize_formats: '10px 12px 14px 16px 18px 20px 22px 24px 26px 28px 30px 32px 34px 36px 38px 40px',width:1000,height: 650, //編輯器高度min_height: 400,images_upload_handler: example_image_upload_handler});

效果如下:
在這里插入圖片描述
在發布文章中插入圖片
在這里插入圖片描述

接收上傳圖片controller

    @PostMapping("/upload")@ResponseBodypublic AjaxResult uploadFile(MultipartFile file) throws Exception{try{// 上傳文件路徑String filePath = RuoYiConfig.getUploadPath();// 上傳并返回新文件名稱String fileName = FileUploadUtils.upload(filePath, file);String url = RuoYiConfig.getServerUrl() + fileName;System.out.println("url-------"+serverConfig.getUrl());System.out.println("fileName-------"+fileName);AjaxResult ajax = AjaxResult.success();ajax.put("url", url);ajax.put("fileName", fileName);ajax.put("newFileName", FileUtils.getName(fileName));ajax.put("originalFilename", file.getOriginalFilename());return ajax;}catch (Exception e){return AjaxResult.error(e.getMessage());}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697775.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697775.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697775.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

金田金業: 美聯儲泡沫正在破裂! 崩潰對黃金非常有利

The Great Recession Blog作者大衛哈吉斯表示&#xff0c;美聯儲一直以來都將繼續收緊貨幣政策&#xff0c;直到出現問題&#xff0c;但市場現在已經陷入泡沫。 他指出&#xff0c;泡沫正在破裂&#xff0c;崩潰最終將對黃金非常有利。 正當投資者聚焦美聯儲何時會降息&#xf…

Springboot 使用升級小記-循環依賴

springboot 使用已經非常廣泛了&#xff0c;它的版本迭代速度也比較快&#xff0c;過一段時間版本差異就會比較大。 由于低版本依賴的 spring 版本有漏洞問題&#xff0c;這次我們是從 2.2.6 版本直接升級到 2.7.16&#xff0c;升級 3.0 的話擔心差異更大。 這時直接修改依賴…

Jmeter 學習目錄(0)

Jmeter 所有內容均以學習為主輸出內容&#xff0c;按照最小單位和基礎進行輸出。 如果有看不懂&#xff0c;或者有不明確的內容&#xff0c;歡迎大家留言說明。 Mac Jmeter下載安裝啟動(1) Jmeter 目錄介紹(2) Jmeter基礎發起一次請求(3)

代碼隨想錄三刷day07

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣206. 反轉鏈表二、力扣24. 兩兩交換鏈表中的節點 前言 遞歸寫法和雙指針法實質上都是從前往后翻轉指針指向&#xff0c;其實還有另外一種與雙指針法不同…

SD-WAN:快速改造升級企業原有網絡架構

隨著企業信息化的推進&#xff0c;傳統網絡架構已難以滿足企業日益復雜和多樣化的組網互聯需求。企業在不斷提高對網絡的要求&#xff0c;包括各辦公點的互聯數據傳輸、資源共享、視頻會議、ERP、OA、郵箱系統、云服務等應用需求&#xff0c;以及對網絡運維工作的簡化和降低難度…

Spring Event 快速入門

請直接看原文 : Spring Event&#xff0c;賊好用的業務解耦神器&#xff01; (qq.com) -------------------------------------------------------------------------------------------------------------------------------- 前言 Spring Event 同步使用 Spring Event 異…

架構篇35:微服務架構最佳實踐 - 方法篇

文章目錄 服務粒度拆分方法基礎設施小結上一篇我們談了實施微服務需要避免踩的陷阱,簡單提煉為: 微服務拆分過細,過分強調“small”。微服務基礎設施不健全,忽略了“automated”。微服務并不輕量級,規模大了后,“lightweight”不再適應。針對這些問題,我們看看微服務最佳…

ADAS智能駕駛測試知多少?

當涉及ADAS&#xff08;Advanced Driver Assistance Systems&#xff09;智能駕駛的測試時&#xff0c;有一個完整的測試體系可以用來評估系統的性能和功能。 1. 傳感器測試 1.1 傳感器校準測試 描述&#xff1a;確保傳感器&#xff08;如雷達、攝像頭、激光雷達等&#xff09;…

【stm32】hal庫學習筆記-UART/USART串口通信(超詳細!)

【stm32】hal庫學習筆記-UART/USART串口通信 hal庫驅動函數 CubeMX圖形化配置 導入LCD.ioc RTC設置 時鐘樹配置 設置LSE為RTC時鐘源 USART設置 中斷設置 程序編寫 編寫主函數 /* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 16, "Demo12_1:USART1-CH340&q…

【PythonGIS】Python線矢量等距離取點/線等分取點點創建矢量面

不多說&#xff0c;這是之前項目需求的代碼&#xff0c;已經是去年的了一直沒來的及發&#xff0c;今天抽出來一丟丟的空擋發一下。主要就是利用線矢量等距離生成點矢量&#xff0c;或者直接將線矢量等分生成點矢量&#xff0c;這個需求其實極限一下就是線轉點了&#xff08;將…

Java中各種O(PO,BO,DTO,VO等) 是不是人為增加系統復雜度?

Java中各種O(PO,BO,DTO,VO等) 是不是人為增加系統復雜度&#xff1f; 在Java和其他編程語言的開發過程中&#xff0c;經常會用到幾個以"O"結尾的縮寫&#xff0c;比如PO,BO,DTO,VO等等&#xff0c;O在這里是Object的縮寫&#xff0c;不同的O代表了不同的數據類型&am…

onlyoffice7.5.1 實現填寫表單 word+html form雙向綁定功能

說明&#xff1a;目前官方已經更新wordhtml為8.0以前的&#xff0c;目前官方新版本8.0增加了pdf綁定&#xff0c;這個我考慮在以后研究努力實現。 onlyoffice雙向綁定form表單數據

Java基礎 - 13 Queue之DelayQueue、PriorityQueue、PriorityBlockingQueue講解

在Java的隊列世界里&#xff0c;有三位大佬&#xff0c;他們分別是DelayQueue、PriorityQueue和PriorityBlockingQueue。今天&#xff0c;讓我們一起揭開他們神秘的面紗&#xff0c;看看他們各自的特點和用途吧&#xff01; DelayQueue 首先&#xff0c;讓我們來認識一下Delay…

2.22 作業

順序表 運行結果 fun.c #include "fun.h" seq_p create_seq_list() {seq_p L (seq_p)malloc(sizeof(seq_list));if(LNULL){printf("空間申請失敗\n");return NULL;}L->len 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) {i…

工廠方法模式Factory Method

1.模式定義 定義一個用于創建對象的接口&#xff0c;讓子類決定實例化哪一個類。Factory Method 使得一個類的實例化延遲到子類 2.使用場景 1.當你不知道改使用對象的確切類型的時候 2.當你希望為庫或框架提供擴展其內部組件的方法時 主要優點&#xff1a; 1.將具體產品和創建…

PHP+vue+mysql倉庫進銷存管理系統8jeqj

開發語言&#xff1a;php 后端框架&#xff1a;Thinkphp 前端框架&#xff1a;vue.js 服務器&#xff1a;apache 數據庫&#xff1a;mysql 運行環境:phpstudy/wamp/xammp等 數據庫工具&#xff1a;Navicat/phpmyadmin 登錄模塊&#xff1a;此模塊主要有4個部分&#xff0c;基…

實驗中用戶行為的檢測

[1] Makris S , Karagiannis P , Koukas S ,et al.Augmented reality system for operator support in human–robot collaborative assembly[J].CIRP Annals - Manufacturing Technology, 2016:S0007850616300385.DOI:10.1016/j.cirp.2016.04.038. —————————————…

gem5學習(24):緩存一致性協議——Cache Coherence Protocols

目錄 一、Common Notations and Data Structures 1、Coherence Messages 2、Access Permissions 3、Data Structures 二、Coherence controller FSM Diagrams 官網教程&#xff1a;gem5: Cache Coherence Protocols 一、Common Notations and Data Structures &#xff…

什么是SSD型云服務器?

?  SSD云服務器是一種使用固態硬盤代替傳統HDD進行存儲的虛擬機。SDD 使用閃存單元來存儲數據&#xff0c;與云計算技術相結合&#xff0c;形成強大且高效的存儲解決方案&#xff0c;可以隨時隨地訪問。 SSD云服務器如何工作? SSD云服務器是利用虛擬化和云計算技術創建的。…

C++最佳實踐之編譯篇

C最佳實踐之工程編譯 在大型c/c工程開發中&#xff0c;往往會涉及多級CMakeLists.txt的調用&#xff0c;并且調用方式錯綜復雜&#xff0c;主要有以下兩種方式&#xff1a; 1. 子目錄中的CMakeList.txt獨立生成目標&#xff0c;不作為主目標生成過程的依賴關系&#xff08;比…