富文本wangeditor图片自定义上传及图片删除

本文介绍了在使用wangeditor富文本编辑器时如何处理图片上传和删除的问题。通过配置上传图片服务器地址及自定义上传回调,实现了图片上传到服务器并回显到文本域中。同时,针对图片删除,通过监听文本域内容变化,找出被删除图片的服务器地址,并执行删除操作,避免服务器文件积累。尽管常见,但此功能并未在成熟富文本组件中默认支持。
摘要由CSDN通过智能技术生成

富文本编辑器的组件有很多像:百度的UEditor ,Vue-Quill-Editor,以及wangeditor。
组件的选择根据自己业务需求选择,本文选用的是wangeditor。
首先说一下业务需求
表单里加富文本,要求能够加载图片,文字进行保存,编辑时能够从数据库读取数据进行回显。
主要问题:
1.图片上传
wangeditor可以取到文本域中的html代码,准备以字符串形式存入数据库。
但对图图片处理默认为base64格式文件,数据库直接保存文本域中的heml字符串太长,很难保存。所以图片进入文本域中先上传到服务器中返回文件地址放回文本域中。幸运的是,wangeditor支持这种文件上传配置如下:具体可看官方api

var editor = new window.wangEditor(’#div1’)
// 配置服务器端地址
editor.customConfig.uploadImgServer = ‘/upload’
注意:返回数据必须为数组形式,否则组件回报错误取不到返回数据

wangeditor可以支持自定义上传设置,配置如下:

组件图片上传回调方法
editor.customConfig.customUploadImg =function(files, insert){
//回显插入方法
insert(html)
}

editor.customConfig.customUploadImg = async function (files, insert) {
   
       let form = new FormData()
          for (let i = 0; i < files.length; i++) {
   
            form.append('file', files[i])
          }
          form.append('token', getToken())
          form.append('x-uid', this.$store.getters.user
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
wangeditor上传图片时,可以通过配置 editor.customConfig.uploadImgShowBase64 属性来预览图片,并设置图片的默认宽度。 1. 首先需要在组件中创建一个 ref 对象,用于获取 wangEditor 实例: ```javascript import React, { Component } from 'react'; import wangEditor from 'wangeditor'; class Editor extends Component { constructor(props) { super(props); this.editorRef = React.createRef(); } componentDidMount() { const editor = new wangEditor(this.editorRef.current); editor.customConfig.onchange = (html) => { this.props.onChange(html); }; editor.customConfig.uploadImgShowBase64 = true; editor.customConfig.uploadImgParams = {...}; editor.customConfig.uploadImgServer = '...'; editor.customConfig.uploadImgHooks = {...}; editor.create(); this.editor = editor; } render() { return ( <div ref={this.editorRef} /> ); } } ``` 2. 在 uploadImgHooks 中的 success 回调函数中,可以获取到上传图片成功后返回的图片地址和图片宽度,并将图片宽度设置为默认宽度: ```javascript const editor = this.editor; editor.customConfig.uploadImgHooks = { success: function (xhr, editor, result) { if (result && result.data && result.data.length > 0) { const imgWidth = result.data[0].width || ''; editor.cmd.do('insertHtml', `<img src="${result.data[0].url}" style="max-width:100%;width:${imgWidth}" />`); } else { window.alert('上传失败'); } }, ... }; ``` 在上面的代码中,imgWidth 代表图片的宽度,可以通过上传图片成功后返回的 result 对象中的 width 属性获取到。将图片的宽度设置为 style 属性的 width 值,并设置 max-width 属性为 100%,可以使图片自适应编辑器的宽度。 需要注意的是,如果上传图片本身就有宽度属性,那么可以直接使用图片本身的宽度,不需要再设置默认宽度。如果图片没有宽度属性,那么可以设置一个固定的默认宽度,例如: ```javascript editor.cmd.do('insertHtml', `<img src="${result.data[0].url}" style="max-width:100%;width:600px" />`); ``` 在这个例子中,将图片的默认宽度设置为 600px。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值