TinyMCE富文本编辑器,实现粘贴进来的Base64图片自动上传、图片压缩上传

        在使用TinyMCE富文本编辑器时,经常会碰到从外部复制粘贴进来的图片,例如直接从微信上复制图片过来粘贴,这时如果没有进行处理的话,粘贴进来的图片是以Base64的图片存在的,而base64格式的图片相当于是很长的一段字符串,小点的图片一般会占到几十KB,大点的图片可能就是几兆,如果一段富文本里同时存在好几张大图片,那体积可能就达到几十兆,甚至更大。

        这时编辑完成存到后台后,在调用接口从后台获取数据时,就很容易出现由于返回数据过大而导致请求时间过长,甚至超出接口设置的timeout时间而无法获取到数据,所以将粘贴的base64图片自动上传转成图片地址感觉是很有必要的。

        还有一种使用情况是需要将富文本内容填进word文件里,并将生成、下载word文件,这时如果上传的图片过大,也会出现word文件体积过大,导致接口要请求很久的情况,这时就又需要将过大的图片进行压缩再上传。

        在TinyMCE实现base64图片的自动上传、图片压缩上传大致的实现代码如下:

import tinymce from 'tinymce/tinymce'

// 安装图片压缩插件 image-conversion 后导入
import * as imageConversion from 'image-conversion'

data() {
    return {
      // TinyMCE初始化配置
      init: {
        // ...TinyMCE的其他配置

        // 允许粘贴
        paste_data_images: true,
        // 粘贴图片后自动上传
        urlconverter_callback: function(url, node, on_save, name) {
          if (node === 'img' && url.startsWith('blob:')) {
            tinymce.activeEditor && tinymce.activeEditor.uploadImages()
          }
          return url;
        },
        
        // 图片上传方法
        images_upload_handler: (blobInfo, success) => {
          // 判断图片大小,大于1024*1024的图片进行压缩,可根据需求自定义
          if (blobInfo.blob().size > 1024*1024) {
            // 使用imageConversion对图片进行压缩,1024为压缩后的图片最大值,最大值可根据需求自定义
            imageConversion.compressAccurately(blobInfo.blob(), 1024).then(res => {
              let formData = new FormData()
              formData.append('file', res, blobInfo.filename())
              formData.append('biz', 'jeditor')
              formData.append('jeditor', '1')
              // 调用图片上传接口
              upload('图片上传接口地址', formData).then((res) => {
                if (res.success) {
                  let img = getFileAccessHttpUrl(res.message)
                  success(img)
                }
              })
            });
          } else {
            // 同上面图片压缩完成后.then里的操作
          }
        },
      },
    }
  },

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在tinymce/tinymce-vue富文本编辑器实现图片上传功能,你可以按照以下步骤操作: 1. 首先,确保你已经安装了tinymcetinymce-vue的依赖包。你可以去[TinyMCE官方网站](https://www.tiny.cloud/get-tiny/self-hosted/)下载最新的TinyMCE压缩包,并解压到你的项目目录中。然后,安装tinymce-vue依赖包,可以使用npm或yarn进行安装。 2. 接下来,将TinyMCE的skins文件夹复制到你的项目的public文件夹下。这个文件夹包含了富文本编辑器的样式文件。 3. 然后,创建一个Vue组件来封装el-upload控件,并将其整合到tinymce-vue中。你可以将这个组件放在你的项目的src/components文件夹下。具体的组件代码可以参考上述提供的链接。 通过以上步骤,你就可以在tinymce/tinymce-vue富文本编辑器实现图片上传功能了。请注意,这只是一种实现方式,具体的实现方式可能因项目需求的不同而有所差异。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3 中 tinymce+tinymce-vue 富文本编辑器使用](https://blog.csdn.net/oooosadas/article/details/131176384)[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_1"}}] [.reference_item style="max-width: 50%"] - *3* [vue-tinymce 富文本编辑器自定义图片上传](https://download.csdn.net/download/hadues/13183093)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值