Vue2Editor 图片上传及不允许粘贴图片

首先封装一下图片上传方法(纯前端):

import * as qiniu from 'qiniu-js'

export function uploadFile(file,token) {
    let fileNameLen = file.name.length;
    let startPos = file.name.lastIndexOf(".");
    //文件名
    const key = new Date().getTime() + '_' + file.name.substring(startPos,fileNameLen);
    const config = {
        useCdnDomain: true,
        region: qiniu.region.z0,
        forceDirect: true // 是否上传全部采用直传方式
    };
    const putExtra = {
        fname: file.name,
        mimeType: ['image/png', 'image/jpeg', 'image/gif']
    };
    return qiniu.upload(file, key, token, putExtra, config);
}

 页面部分:

<template>
    <VueEditor
        :editorOptions="editorSettings"
        v-model="actForm.detail"
        useCustomImageHandler
        @image-added="handleImageAdded">
    </VueEditor>
</template>

js部分:

<script>
//引入刚刚封装好的方法
import { uploadFile } from "@/utils/uploaderHelper.js"
    export default {
        data(){
            return{
                detail:'',
                editorImg: null,
     		    editorUrl: null,
                editorSettings:{
                    modules:{
                        clipboard:{
                            matchers: [[Node.ELEMENT_NODE, this.handleCustomMatcher]]
                        }
                    }
                }
            }
        },
        created(){
            //页面载入时调用后端接口获取一下上传token
        },
        methods:{
            handleImageAdded(file, Editor, cursorLocation, resetUploader) {
                uploadFile(file,this.qiniuData.token).subscribe({
                    next: (result) => {
                        console.log(result);
                    },
                    error: (err) => {
                        console.log(err)
                    },
                    complete: (e) => {
                        this.editorImg = e.key;
                        this.editorUrl = `https://scdn.usale.cn/${this.editorImg}`
                        Editor.insertEmbed(cursorLocation, "image", this.editorUrl);
                        resetUploader();
                    },
                });
            },
            handleCustomMatcher(node, Delta) {
                let ops = []
                Delta.ops.forEach(op => {
                    if (op.insert && typeof op.insert === 'string') {
                        // 如果粘贴了图片,这里会是一个对象,所以可以这样处理
                        ops.push({
                            insert: op.insert,
                        })
                    }else{
                        this.$message({
                            message:'不允许粘贴图片,请手动上传',
                            type:'warning'
                        })
                    }
                })
                Delta.ops = ops
                return Delta
            },

        }
    }
</script>

效果如下 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用`vue-quill-editor`进行图文粘贴时,复制的图片实际上以base64的形式进行上。然而,将base64写进数据库并不是一个好的做法。因此,解决思路是将复制的图片至服务器,然后将服务器返回的图片地址作为img标签插入到富文本编辑器中,这样就可以正确显示图片了。以下是一个解决思路的代码实例供参考: ```javascript mounted() { let quill = this.$refs.myQuillEditor.quill; quill.root.addEventListener("paste", (evt) => { if (evt.clipboardData && evt.clipboardData.files && evt.clipboardData.files.length) { evt.preventDefault(); [].forEach.call(evt.clipboardData.files, (file) => { if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) { return; } const formData = new FormData(); formData.append("pictureFile", file); makdwnImg(formData) .then((res) => { if (res.data.code == 200) { let quill = this.$refs.myQuillEditor.quill; let length = quill.getSelection().index; quill.insertEmbed(length, "image", res.data.data); quill.setSelection(length + 1); } }) .catch((err) => { console.error(err); }); }); } }, false); }, ``` 通过这段代码,你可以在`vue-quill-editor`中实现图文粘贴图片并正确显示图片。需要注意的是,你需要根据你自己的项目做一些适应性的调整。希望这能帮到你!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue-quill-editor粘贴图片vue-quill-editor复制图片](https://blog.csdn.net/weixin_43131046/article/details/116490735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值