vue 富文本编辑器的使用quill(可上传图片)

568 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

vue 富文本编辑器使用quill(可上传图片)

命令(下载依赖)

npm install vue-quill-editor -–save
npm install quill --save
页面引入quill使用
<html>
    <quill-editor  ref="text" v-model="dataForm.content"  class="myQuillEditor" :options="editorOption"/>
</html>
//引入
import Quill from "quill";
import { quillEditor } from "vue-quill-editor";
import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
<script>
    data:(){
        return {
          quillEditor: null,
          editorOption: {
             modules:{
                toolbar:[
                    ['bold', 'italic', 'underline', 'strike'],    
                    ['blockquote', 'code-block'],
                    [{ header: 1 }, { header: 2 }],
                    [{ 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] }],
                    [{ color: [] }, { background: [] }],
                    [{ font: [] }],
                    [{ align: [] }],
                    ["clean"],
                    ['image']
                ]
             },
            // editorOption里是放图片上传配置参数用的,例如:
            action: "/api/product/richtext_img_upload.do", // 必填参数 图片上传地址
            methods: "post", // 必填参数 图片上传方式
            // token: '',  // 可选参数 如果需要token验证,假设你的token有存放在sessionStorage
            name: "upload_file", // 必填参数 文件的参数名
            size: 1024, // 可选参数   图片大小,单位为Kb, 1M = 1024Kb
            accept:"multipart/form-data, image/png, image/gif, image/jpeg,image/jpg" // 可选 可上传的图片格式
          },
       }
    },
    components: {
        quillEditor
    },
</script>

限制富文本内图片大小,有无图片,限制图片大小

<script>
    //限制富文本内图片大小,有无图片,限制图片大小
    const  theEle = this.$refs.text;     //获取到元素
    console.log(theEle.value);//获取到富文本内容
    var img=theEle.value.match(/<img[^>]+>/g);//筛选img标签
    if(img==null){//判断有无图片
        this.$message("请上传图片");
        return false
    }
    var arrImg = '' // 定义空字符串,下面会往里边填充img标签
    for (var j = 0; j < img.length; j++) {
        // 正则匹配,摘出img标签下的src里的内容,即capture
        img[j].replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function(match, capture) {
            arrImg += capture
         });
     }
    // 原来的字符流大小,单位为字节
    var strLen=arrImg.length;
     // 计算后得到的文件流大小,单位为字节
    var fileSize=parseInt(strLen-(strLen/8)*2);
    // 由字节转换为MB
    var size = "";
    size = (fileSize / 1024/1024).toFixed(2);
    if(size>1){
        this.$message.error("文件大小超过1M,请重新上传")
        return false
    }
</script>

//base64图片计算 www.jianshu.com/p/b34037058…