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 相关文章推荐
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 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的核心Zend
2006/09/05 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
Vue程序调试的方法
2019/06/17 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Python实现弹球小游戏
2020/08/01 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
十一个高级MySql面试题
2014/10/06 面试题
合作意向书格式及范文
2014/03/31 职场文书
总结会主持词
2015/07/02 职场文书
cf战队宣传语
2015/07/13 职场文书