vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能


Posted in Vue.js onJanuary 13, 2021

一、准备工作

下载vue-quill-editor

npm install vue-quill-editor --save 或者 yarn add vue-quill-editor

二、定义全局组件quill-editor

下载好vue-quill-editor后,我们需要定义一个全局组件,把这个组件名字命名为quill-editor

1、定义template模板

<div>
 <quill-editor
 v-model="value"
 ref="myQuillEditor"
 :options="editorOption"
 @change="onEditorChange"
 >
 </quill-editor>
 <input type="file" hidden accept=".jpg,.png" ref="fileBtn" @change="handleChange" />
</div>

2、定义富文本选项配置

editorOption: {
 toolbar: [
 ['bold', 'italic', 'underline'], //加粗、斜体、下划线、删除线, 'strike'
 ['blockquote', 'code-block'], //引用、代码块
 [{ 'header': 1 }, { 'header': 2 }], //H1 H2
 [{ 'list': 'ordered' }, { 'list': 'bullet' }], //列表
 [{ 'script': 'sub' }, { 'script': 'super' }], //上标、下标
 [{ 'indent': '-1' }, { 'indent': '+1' }], //缩进
 [{ 'direction': 'rtl' }], //文字编辑方向,从左到右还是从右到左
 [{ 'size': ['small', false, 'large', 'huge'] }], //文字大小
 [{ 'header': [1, 2, 3, 4, 5, 6, false] }], //选中的文字容器高度
 [{ 'font': [] }], //字体样式
 [{ 'color': [] }, { 'background': [] }], //颜色、背景颜色
 [{ 'align': [] }], //对齐方式
 ['clean'], //清除选中文字的所有样式
 ['link', 'image', 'video'] //超链接、图片、视频链接
 ],
}

三、相关方法

1、改变原有富文本编辑器上传图片绑定方法

mounted() {
 if (this.$refs.myQuillEditor) {
 //myQuillEditor改成自己的
 this.$refs.myQuillEditor.quill.getModule("toolbar").addHandler("image", this.imgHandler);
 }
},
methods:{
 imgHandler(state) {
 if (state) {
 		//触发input的单击 ,fileBtn换成自己的
  this.$refs.fileBtn.click()
 }
 }
}

2、上传事件

handleChange(e) {
 const files = Array.prototype.slice.call(e.target.files);
 if (!files) {
 return;
 }
 let formdata = new FormData();
 formdata.append("file_name", files[0].name);
 formdata.append("imgs", files[0]);
 //使用了axios请求
 this.axios({
 url: this.$store.state.baseUrl + 'upload/ueditorFile',
 method: 'post',
 data: formdata,
 headers: {'client-identity': localStorage.getItem('session_id')}
 }).then((res) => {
 	//这里设置为空是为了联系上传同张图可以触发change事件
 this.$refs.fileBtn.value = "";
 if (res.data.code == 200) {
  let selection = this.$refs.myQuillEditor.quill.getSelection();
  //这里就是返回的图片地址,如果接口返回的不是可以访问的地址,要自己拼接
  let imgUrl = this.$store.state.baseUrl + res.data.data; 
  imgUrl = imgUrl.replace(/\\/g,"/") 
			//获取quill的光标,插入图片 
  this.$refs.myQuillEditor.quill.insertEmbed(selection != null ? selection.index : 0, 'image', imgUrl)   
			//插入完成后,光标往后移动一位 
  this.$refs.myQuillEditor.quill.setSelection(selection.index + 1);
 } 
 })
}

最后在父组件使用这个全局quill组件,并传递自己需要的相关参数,就完成啦~

到此这篇关于vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能的文章就介绍到这了,更多相关vue-quill-editor上传图片到服务器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
Vue实现小购物车功能
Dec 21 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
Vue 数据响应式相关总结
Jan 28 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 #Vue.js
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 #Vue.js
vue自定义组件实现双向绑定
Jan 13 #Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 #Vue.js
Vue项目中使用mock.js的完整步骤
Jan 12 #Vue.js
vue 页面跳转的实现方式
Jan 12 #Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 #Vue.js
You might like
php中文字符截取防乱码
2008/03/28 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
Python连接字符串过程详解
2020/01/06 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
高中生的学习总结自我鉴定
2013/10/26 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
土地转让协议书范本
2014/04/15 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
辞职信怎么写
2015/02/27 职场文书
初三英语教学反思
2016/02/15 职场文书