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与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
vue监听键盘事件的相关总结
Jan 29 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
vue打包时去掉所有的console.log
Apr 10 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
在WordPress中实现评论头像的自定义默认和延迟加载
2015/11/24 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
Python实现句子翻译功能
2017/11/14 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python实现批量文件重命名
2019/10/31 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
美国家具网站:Cymax
2016/09/17 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
测量实习生自我鉴定
2013/09/19 职场文书
管理专员自荐信
2014/01/26 职场文书
监察建议书范文
2014/03/12 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL