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 页面跳转的实现方式
Jan 12 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
vue 数据双向绑定的实现方法
Mar 04 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
vue动态绑定style样式
Apr 20 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python解惑之True和False详解
2017/04/24 Python
python matlibplot绘制3D图形
2018/07/02 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
工商管理专业实习生自我鉴定
2013/09/29 职场文书
安全生产先进个人材料
2014/02/06 职场文书
活动总结格式范文
2014/04/26 职场文书
班委竞选演讲稿
2014/04/28 职场文书
仓库管理计划书
2014/05/04 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
施工现场安全管理制度
2015/08/05 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS