Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue + quill富文本编辑器 实现自定义图片上传功能

vue + quill富文本编辑器 实现自定义图片上传功能

作者头像
躺平程序员老修
发布于 2023-09-05 08:05:25
发布于 2023-09-05 08:05:25
1.6K01
代码可运行
举报
运行总次数:1
代码可运行

前言

好久没更新博客了,主要最近一直在忙,一是工作比较多,二是在忙着写自己的‘墨客’项目。该项目前后端分离,后端使用laravel5.5 + passport提供接口,前端使用vue2.5 + axios + vuex。最近在写到‘发布文章’的功能时候,遇到选择编辑器和定制编辑器问题,对比了之后选择quill。但是quill在上传图片时使用的是base64编码后的图片,这与我们的需求不符,于是决定自己定制化一下,ok,接下来开始正文。

代码实现

网上好多方法,但是没一个能用的,有的就算能用也根本不规范。

首先我需要定制化导航栏,其次我要定制化图片上传功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div>
        <header-bar :title="title" :pre-page="prePage"></header-bar>
        <div>
            <input type="text" v-model="postTitle">
            <quill-editor
                v-model="postContent"
                ref="myQuillEditor"
                :options="editorOption"
                @blur="onEditorBlur($event)"
                @focus="onEditorFocus($event)"
                @change="onEditorChange($event)">
            </quill-editor>
            <button @click="submitPost">提交</button>
        </div>
        <tab-bar></tab-bar>
    </div>
</template>

<script>
    import HeaderBar from '../components/HeaderBar'
    import TabBar from '../components/TabBar'
    import Common from '../assets/js/common'
    import { Toast } from 'mint-ui';
    import  '../plugins/editor/vue-quill-editor'

    export default {
        name: 'Index',
        data () {
            return {
                title: '发布文章',
                prePage: '/',
                postTitle: '',
                postContent: '',
                editorOption: {
                    modules: {
                        toolbar: {
                            container:[
                                [{ 'header': [1, 2, 3, false] }],
                                ['bold', 'italic', 'underline', 'strike',],
                                ['blockquote', 'code-block', 'link', 'image',],
                                [{ 'color': [] }, { 'background': [] }],
                                [{ 'list': 'ordered'}, { 'list': 'bullet' }, { 'align': [] }],
                            ],
                            handlers: {'image': this.imageHandler}
                        }
                    },
                    placeholder: 'Compose an epic...',
                    readOnly: false,
                    theme: 'snow'
                },
            }
        },
        components: {
            HeaderBar,
            TabBar,
        },
        computed: {
            editor() {
                return this.$refs.myQuillEditor.quill
            }
        },
        mounted() {
            Common.checkLogin();
            // console.log('this is current quill instddddance object', this.editor)
        },
        methods: {
            onEditorBlur: function (quill) {
                // console.log('editor blur!', quill)
            },
            onEditorFocus: function (quill) {
                // console.log('editor focus!', quill)
            },
            onEditorChange: function ({ quill, html, text }) {
                // console.log('editor change!', quill, html, text)
                // this.postContent = html
            },
            submitPost: function () {
                console.log(this.postTitle);
                console.log(this.postContent);
            },
            imageHandler: function () {
                let input = document.createElement('input');
                input.setAttribute('type', 'file');
                input.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');
                input.click();
                // 监听上传
                input.onchange = () => {
                    let file = input.files[0];
                    if (/^image\//.test(file.type)) {
                        this.saveImage(file);
                    } else {
                        Toast('只能上传图片哦');
                    }
                };
            },
            saveImage: function (file) {
                let fd = new FormData();
                fd.append('image', file);

                let url = 'file/image';
                this.$http.post(url, fd).then(res => {
                    if (res.status === 201) {
                        this.insertImage(res.body.data)
                    }
                }, res => {
                    if (res.status !== 0) {
                        Toast(res.status + res.body.message)
                    }
                })
            },
            insertImage: function (url) {
                let range = this.editor.getSelection();
                this.editor.insertEmbed(range.index, 'image', url)
            }
        }
    }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

首先我传入一个toolbar和一个handlers,toolbar可以自定义需要的功能,handlers可以‘重构’已有功能,根本不需要写什么html。

之后的逻辑是首先:调用imageHandler方法,进行初始化与文件验证;接着调用saveImage,请求接口,我的接口返回完整的图片链接;最后是使用quill的api进行插入。

OJBK!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
quill-editor:Vue轻量级富文本编辑器-Vue-Quill-Editor
OK,搞定,简洁的富文本编辑器就展现在你眼前了,另外附上API。Vue-Quill-Editor.
江一铭
2022/06/16
3.6K0
quill-editor:Vue轻量级富文本编辑器-Vue-Quill-Editor
vue富文本编辑器tinymce_vue移动端富文本编辑器
前言:vue中很多项目都需要用到富文本编辑器,在使用了ueditor和tinymce后,发现并不理想。所以果断使用vue-quill-editor来实现。
全栈程序员站长
2022/11/04
4K0
基于 Vue 的移动端富文本编辑器 vue-quill-editor 实战
优秀的富文本编辑器有很多,比如:UEditor,wangEditor 等,但并不是每个都能在移动端有很好的表现。
solocoder
2022/04/06
5.1K0
基于 Vue 的移动端富文本编辑器 vue-quill-editor 实战
Vue + Element + vue-quill-editor 实现源码编辑、自定义图片上传和汉化
vue-quill-editor自带的上传,是把图片变成了base64的格式,不符合一般的项目需求。我猜它是用的FileReader的API。
FinGet
2019/06/28
2.4K0
Vue + Element + vue-quill-editor 实现源码编辑、自定义图片上传和汉化
vue使用富文本编辑器tynimce并实现图片上传_富文本编辑器有什么用
vue-富文本编辑器 Vue-Quill-Editor使用 官网文档,可以参照文档进行使用https://www.kancloud.cn/liuwave/quill/1434140
全栈程序员站长
2022/11/04
9140
Vue实战Vue-Quill-Editor富文本编辑器
     做博客系统、商城系统、cms系统等系统的时候需要自动生成网页,自动生成多媒体等图片网页的时候我们就用到了富文本编辑器。以前用jquery的时候经常使用的有百度富文本编辑器UEditor,不过因为后期自适应不大好使,也就换成别的了,有时候用过Ckeditor。自从用了element ui后打算做一个博客系统,后来就研究了一下Vue-Quill-Editor,嵌入到element ui中。Vue-Quill-Editor,这是一款基于Quill、适用于Vue的富文本编辑器。
十分钟空间
2022/08/17
1.7K0
element-vue使用富文本编辑器【前端】
官方地址:https://quilljs.com/docs/quickstart/
sinnoo
2020/11/13
3.2K0
element-vue使用富文本编辑器【前端】
vue+element-ui 使用富文本编辑器
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145033.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/27
4.6K0
vue+element-ui 使用富文本编辑器
使用微信小程序 富文本编辑器组件 editor
https://developers.weixin.qq.com/miniprogram/dev/component/editor.html 富文本组件文档
hotqin888
2019/08/18
8.6K0
vue组件——富文本编辑器
富文本编辑器支持markdown语法,是程序员做笔记,功能很多,样式很多的一种很方便的文本编辑器,很推荐学会使用markdown语法 今天在vue的学习中,用到了富文本编辑器的插件, 插件源码地址
不愿意做鱼的小鲸鱼
2022/09/24
4.2K0
vue组件——富文本编辑器
微信小程序editor富文本编辑
直接复制看效果 <editor class="editor" id="editor" show-img-toolbar show-img-resize value="{{content}}" placeholder="请输入" bindready="readyEditor" bindstatuschange="changeEditor" bindinput="inputEditor"> </editor> <view class="toolbar" catchtouchend="formatOpt
明知山
2020/12/08
1.7K0
Vue 项目中 TinyMCE 富文本编辑器的具体使用方法
TinyMCE是一款功能强大、高度可定制的富文本编辑器,被广泛应用于各种Web应用中。在Vue项目中集成TinyMCE可以为用户提供专业的文本编辑体验。本文将详细介绍如何在Vue项目中使用TinyMCE,并提供完整的应用实例。
小焱
2025/05/22
1.6K0
Vue 项目中 TinyMCE 富文本编辑器的具体使用方法
2024年Vue富文本编辑器推荐:十款必备富文本组件详解之Vue中有哪些富文本组件?
在现代前端开发中,富文本编辑器几乎是不可或缺的工具,无论是构建博客、CMS系统,还是处理在线文档,Vue生态为开发者提供了丰富的选择。本文汇总了十款高效、流行的富文本编辑器组件,详细解析它们的安装、配置、用法及适用场景,帮助你快速上手并选择最佳解决方案。
猫头虎
2024/12/30
2.2K0
Quill 富文本编辑器简介
Quill 是一个免费的,开源的 WYSIWYG (What You See Is What You Get)编辑器,专为现代网络而打造。凭借其模块化架构和富有表现力的 API,你可完全自定义以满足任何需求。
阿宝哥
2019/11/06
4.1K0
微信小程序富文本编辑器editor初体验-图片上传
https://developers.weixin.qq.com/miniprogram/dev/component/editor.html
hotqin888
2019/06/14
6.1K1
Vue2 后台管理系统解决方案
之前在公司用了Vue + Element组件库做了个后台管理系统,基本很多组件可以直接引用组件库的,但是也有一些需求无法满足。像图片裁剪上传、富文本编辑器、图表等这些在后台管理系统中很常见的功能,就需要引用其他的组件才能完成。从寻找组件,到使用组件的过程中,遇到了很多问题,也积累了宝贵的经验。所以我就把开发这个后台管理系统的经验,总结成这个后台管理系统解决方案。
全栈程序员站长
2022/07/07
1.3K0
Vue2 后台管理系统解决方案
最近迷上了富文本编辑器!
遥想刚入行的时候在一个媒体类的互联网单位,既然是媒体单位,文案的在线编辑,自然而然成为了一个不可绕过的坎
用户7413032
2022/03/09
3.9K2
最近迷上了富文本编辑器!
富文本vue-quill-editor结合el-element实现自定义上传组件
就是要一个富文本编辑器,然后有图片上传功能,因为vue-quill-editor是将图片转为base64编码,所以当图片比较大时,提交后台时参数过长,导致提交失败。
青梅煮码
2023/03/02
3.3K0
Quill富文本编辑器使用 - 高度自定义现代 Web 富文本编辑器
Quill富文本编辑器在当今数字内容创作领域中扮演着至关重要的角色。随着网络技术的不断进步和内容营销的普及,人们对在线编辑工具的需求日益增长。Quill富文本编辑器以其强大的功能、灵活的定制性以及用户友好的界面,在众多富文本编辑器中脱颖而出,成为了许多博客作者和内容创作者的首选工具。
泯泷、
2024/03/13
1.5K0
vue富文本编辑器插件推荐_elementui富文本编辑器
2)在node_modules里面找到tinymce,将skins目录复制到public/tinymce里面
全栈程序员站长
2022/11/04
2.7K0
推荐阅读
相关推荐
quill-editor:Vue轻量级富文本编辑器-Vue-Quill-Editor
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验