Vue-Quill-Editor插件插入图片的改进
最近在做一个Vue-Clie小项目,使用到了Vue-Quill-Editor这个基于Vue的富文本编辑器插件。这个插件跟Vue契合良好,使用起来比其他的诸如百度UEditor要方便很多,但是存在一个小问题就是Vue-Quill-Editor对于图片上传的处理,它是把图片转换为Base64格式然后上传到后台服务器的,这样做存在的问题就是当图片达到一定大小时,后台存储会有麻烦,理论上使用MySQL数据库存储的话一个字段长度限制在65535左右,最多也不能超过100K,这对于图片上传来说显然是不够用的,所以就需要改进Vue-Quill-Editor。
改进方法是将图片的处理方式修改,不再转换为Base64格式上传,而是先上传到服务器然后再返回图片的Url,让文本编辑器引用这个Url来显示图片。
如何修改Vue-Quill-Editor的按钮面板以及默认处理函数,参考了这位老哥的文章,文章意思大致就是可以通过在 quill-editor 标签中插入标签,利用slot插槽修改默认面板(注意定义面板的div的id设置为“toolbar”了,根据这个id在配置中要指定面板)。通过插入slot的标签修改默认面板之后,还需要在option中修改配置:
data(){
return {
length: '',
editor: {},
editorOption: { //这个对象用于绑定到options属性
modules: {
// imageImport: true,
// imageResize: {
// displaySize: true
// },
toolbar: '#toolbar',//配置面板!!!
}
},
}
}
这一部分参考了另一位老哥的文章,这位老哥主要是讲解了在修改了面板之后的工作:如何定义处理函数,如何把最终的图片插入到文本编辑器中。
这里使用了一个虚拟的file类型的input嵌在一个隐藏的Form表单中上传文件,将其隐藏,通过click()函数触发点击事件。由于需要获取文件上传之后返回来的UUID(通过PHP的uniqid()函数生成),所以不能使用表单上传,必须通过Ajax,这样在成功回调中才可以将图片插入到文本编辑器(如果不这样做,无法保证插入图片之前文件上传已经完成,可能会导致404错误)。但是使用Ajax无法获取form表单的enctype等属性,这样上传到后台之后也会出现错误。解决方案就是使用FormData对象上传,给FormData对象传入form表单DOM就可以了。后台获取文件的方式与表单上传无异。
具体如何将图片插入到编辑器中,参考的是这篇文章。
var range = this.$refs.myTextEditor.quillEditor.getSelection();
var length = range.index;
this.$refs.myTextEditor.quillEditor.insertEmbed(length, 'image', imageUrl);
需要修改的是getSelection()函数需要传递一个Boolean类型参数,参数传递为true才能正确获取到range。
Vue-Quill-Editor插件插入图片的改进的更多相关文章
- vue quill editor输入文字出现首字母的问题
当使用vue quill editor输入中文时,第一个中文的汉语拼音第一个字母会显示如图. 解决的办法就是升级vue quill editor js文件的版本,目前的我升级之后ok的版本是 < ...
- vue.js插值,插入图片,属性
<html><head><title>Insert title here</title><script type="text/javas ...
- 在Vue项目使用quill-editor带样式编辑器(更改插入图片和视频)
vue-quill-editor默认插入图片是直接将图片转为base64再放入内容中,如果图片比较大的话,富文本的内容就会很大. 插入视频是直接弹框输入URL地址,某些需求下我们需要让用户去本地选择自 ...
- ckeditor 4.2.1_演示 ckeditor 上传&插入图片
本文内容 FineUI ckeditor fckeditor/ckeditor 演示 ckeditor 4.2.1 上传&插入图片 最近看了一下 FineUI_v3.3.1 控件,对里边的 c ...
- Vue富文本编辑器(图片拖拽缩放)
富文本编辑器(图片拖拽缩放) 需求: 根据业务要求,需要能够上传图片,且上传的图片能在移动端中占满屏幕宽度,故需要能等比缩放上传的图片,还需要能拖拽.缩放.改变图片大小.尝试多个第三方富文本编辑器,很 ...
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
- 富文本编辑器UEditor自定义工具栏(二、插入图片、音频、视频个性化功能按钮和弹层及自定义分页符)
导读:本篇将简单探讨插入图片.音频.视频的功能按钮实现方式 传送门:富文本编辑器UEditor自定义工具栏(一.基础配置与字体.背景色.行间距.超链接实现) 一.效果图 1.UEditor自定义工具栏 ...
- Vue 自定义一个插件的用法、小案例及在项目中的应用
1.开发插件 install有两个参数,第一个是Vue构造器,第二个参数是一个可选的选项对象 MyPlugin.install = function (Vue, options) { // 1 ...
- 使用Ajax+jQuery来实现前端收到的数据在console上显示+简单的主页设计与bootstrap插件实现图片轮播
1.实现前端输入的数据在console上显示 上一篇是解决了在前端的输入信息在cygwin上显示,这次要给前台们能看见的数据,因为数据库里插入的数据少,所以写的语句翻来覆去就那几个词,emmm···当 ...
随机推荐
- WPF与Winform中的不同(1)
1. 部分控件的Text属性,变成了 Content属性 如: winform中,Button.Text = "abc"; wpf中,Button.Content = " ...
- FocusBI: 总线矩阵(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- 批量插入Oracle,遇到CLob字段慢的解决办法
在一次执行批量插入到Oracle表,其他一个字段设置为CLOB,但没有内容,在插入时,在代码指定为CLOB类型,插入相当慢,后来改为VarChar2,速度就上去了,经测试,插入一个65535个字符,没 ...
- net core 发布到服务器的方式
---恢复内容开始(15:05:15)--- using (var scope = ServiceProvider.CreateScope()){ var aSubscriber = Activato ...
- 浅谈MES系统SMT的JIT功能(二):JIT流程
上周说到JIT的原理,今天就说说JIT功能的基本流程:从维护基本信息——>生产人员排程——>仓库人员发料——>生产上料——>JIT物料配送看板拉到仓库人员发第二次料,循环上料发 ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- 十三、nginx 强制下载txt等文件
当前的浏览器能够识别文件格式,如果浏览器本身能够解析就会默认打开,如果不能解析就会下载该文件. 那么使用nginx做资源服务器的时候,如何强制下载文件呢? location /back/upload/ ...
- Springboot简单整合Rabbit
两个项目.分别是生产者和消费者项目 .首先引入依赖.两边pom都一样 第一次练习,启动生产者后,再启动消费者,一直报找不到 队列的声明. 后排查发现是 需要现在生产者这边浏览器访问一次生产消息的方法 ...
- spring的事务传播行为
1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 比如说,ServiceB.methodB的事务级别定义为PRO ...
- influxdb 的安装(centos)
安装命令: # for 64-bit systems wget http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm sudo r ...