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 18 Vue.js
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
Vue h函数的使用详解
Feb 18 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
Laravel日志用法详解
2016/10/09 PHP
javascript 精粹笔记
2010/05/09 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
Python实现计算最小编辑距离
2016/03/17 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python之指数与E记法的区别详解
2019/11/21 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
党校培训思想汇报
2014/01/03 职场文书
污水厂厂长岗位职责
2014/01/04 职场文书
项目总经理岗位职责
2014/02/14 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
员工开除通知书
2015/04/25 职场文书
领导离职感言
2015/08/03 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
centos8安装MongoDB的详细过程
2021/10/24 MongoDB