VueQuillEditor富文字上傳圖片-非base64
前言
本篇文章將介紹vue-quill-editor
上傳圖片的那些事,通常來說,我們資料庫內都是儲存圖片路徑的,所以上傳完圖片之後,要回傳一個路徑給前端,這才是完整的上傳步驟。
第一步:上傳圖片,第二步:儲存到伺服器,並且生成路徑儲存到資料庫,第三步:回傳前端,後臺圖片路徑,前端顯示圖片。
本文中使用了element-ui
框架來幫助我完成前端展示工作。
上傳圖片
上傳圖片也有幾種方式,比如直接使用file
控制元件上傳到指定地址,又或者是藉助封裝好的上傳按鈕上傳圖片,如果是base64
傳到後臺,還需要轉回圖片原格式加以儲存,如果是二進位制圖片流則直接傳到伺服器即可。
我使用的是element-ui
框架裡的el-upload
元件進行上傳,而且這個元件是隱藏的,不會顯示出來
<el-upload
class="avatar-uploader"
:action="articleImgUrl"
name="img"
:headers="headerObj"
:show-file-list="false"
:on-success="uploadSuccess"
:on-error="uploadError"
:before-upload="beforeUpload">
</el-upload>
上述引數解釋:
(1)class 上傳元件的樣式,也可以用於查詢該元件
(2)action 傳值,必選引數,上傳的地址
(3)name 上傳檔案欄位名,後端在獲取檔案時需要起一個名字,這個名字就在這裡定義
(4)headers 設定上傳的請求頭部
(5) show-file-list 是否顯示已上傳檔案列表,這裡不顯示
(6) on-success 檔案上傳成功時的鉤子,如果成功,則回傳圖片地址,顯示圖片將src傳入地址
(7) on-error 檔案上傳失敗時的鉤子
(8)before-upload 上傳檔案之前的鉤子,引數為上傳的檔案,若返回 false 或者返回 Promise 且被 reject,則停止上傳。
我首先需要監聽富文字點選上傳圖片按鈕的事件:
editorOption: {
scrollingContainer: '#editorcontainer',
placeholder: '',
// or 'bubble'
theme: 'snow',
modules: {
imageResize: {
displayStyles: {
backgroundColor: 'black',
border: 'none',
color: 'white'
},
modules: ['Resize', 'DisplaySize', 'Toolbar']
},
toolbar: {
// 工具欄
container: toolbarOptions.toolbarOptions,
handlers: {
'image': function (value) {
if (value) {
// upload點選上傳事件
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false)
}
}
}
}
}
},
上面程式碼當中toolbar
裡的handlers
就是監聽點選圖片按鈕事件,然後我們模擬點選el-upload
元件,就會彈出選擇檔案的框,我們開始選擇檔案進行上傳。
當後端處理好圖片後,我們拿到回傳的地址,在富文字游標處插入img
標籤
// 上傳成功
uploadSuccess(res) {
var dt = res.result
let quill = this.$refs.myQuillEditor.quill
// 如果上傳成功
if (dt.meta.status === this.GLB.IMAGE_ADD_SUCCESS && dt.url !== null) {
// 獲取游標所在位置
let length = quill.getSelection().index
// 插入圖片 dt.url為伺服器返回的圖片地址
quill.insertEmbed(length, 'image', this.glAPI + dt.url)
// 調整游標到最後
quill.setSelection(length + 1)
} else {
this.$message.error('圖片插入失敗')
}
// loading載入隱藏
this.quillUpdateImg = false
},
如果小夥伴喜歡原生標籤使用input
標籤file
型別也是可以的,或者也可以藉助JavaScript
或者jQuery
響應點選事件來傳檔案也是可以噠!
總結
上傳圖片其實是一個很簡單的過程,但是卻需要前後端來配合食用,味道才正宗。所以只學前端的小夥伴可以找個後端開發寫個介面啥的幫你回傳一個地址,或者乾脆自己造個假的也行。
我一開始不是很清楚圖片到底怎麼傳的,比如base64是什麼,其實就是照片的一串字串,這一串字串就是照片,有的時候是可能存在把這一串base64字串儲存到資料庫的。但是大多數情況我們還是在資料庫中儲存路徑,所以很多想儲存圖片路徑的小夥伴們,可以參考上述程式碼,下一篇我將結合Java來展示圖片儲存的程式碼是怎樣實現的,又是怎樣回傳圖片地址的,敬請期待吧!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3209/viewspace-2825578/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android圖片Base64加密+文字上傳Android加密
- VUE:quill修改預設複製圖片base64的行為--富文字複製圖片變成上傳VueUI
- JS base64 圖片上傳JS
- 上傳圖片生成base64
- 富文字編輯器Quill(二)上傳圖片與視訊UI
- 富文字編輯器CKeditor的配置和圖片上傳,看完不後悔
- 拖拽上傳如何獲取到圖片的base64
- 圖片線上轉base64,base64線上轉圖片-線上助手
- springboot整合百度富文字編輯器ueditor實現圖片上傳和檔案上傳功能Spring Boot
- Laravel-admin 配置 wangEditor3 富文字編輯器圖片七牛雲上傳Laravel
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- element上傳圖片元件使用方法|圖片回顯|格式轉換base64元件
- 有道雲筆記非會員上傳圖片筆記
- base64 編碼轉圖片儲存本地和上傳 oss
- 前端實現圖片上傳預覽並轉換base64前端
- 日常筆記三:將base64的圖片上傳到本地筆記
- vue如何使用富文字編輯器wangEditor自定義圖片上傳(解決跨域問題)Vue跨域
- 上傳圖片
- 用label顯示帶圖片的富文字
- js 如何提取富文字里的圖片路徑JS
- electron上傳圖片
- 上傳圖片jsJS
- 裁剪上傳圖片
- ie8上傳本地圖片檔案轉base64 並預覽地圖
- [BUG反饋]使用base64上傳圖片,php://input裡沒有值PHP
- 圖片上傳及圖片處理
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- Django3.X使用富文字編輯器kindereditor上傳圖片時一直轉圈圈,如何解決Django
- Vue富文字帶圖片修改圖片大小自定義選擇項自定義字型Vue自定義字型
- 多圖片formpost上傳ORM
- spring boot 圖片上傳Spring Boot
- 測試圖片上傳
- input file圖片上傳
- 本地Markdown上傳圖片
- PbootCMS上傳圖片變模糊、上傳圖片尺寸受限的解決方案boot
- 上傳圖片 以及做成縮圖
- vue 上傳圖片進行壓縮圖片Vue
- Ueditor 上傳圖片自動新增水印(只能上傳圖片,上傳檔案報錯)