TinyMCE富文本编辑器上传图片

官方文档(英文):https://www.tiny.cloud/docs/tinymce/latest/introduction-to-tinymce/

中文文档(不完全):http://tinymce.ax-z.cn/

一、问题

项目里用的版本是4.9.3,因为基础的插入图片只能通过输入图片地址,不方便,像这样:

所以需要加一个可以在本机上选择图片的操作。因为是在老项目上做更改,涉及的地方比较多,升级版本会有一些额外的问题,所以没有升级。如果是刚开始用,建议选择更高的版本。

二、实现

为了实现需求,有两种方法:

1.自定义一个图片上传的按钮。按钮的位置不知道放哪里好。

2.用编辑器的插入图片,配置参数。

这里主要针对第2种方法做说明。中文文档的图片上传用的是配置images_upload_urlimages_upload_base_path参数,就不再说了。这里就用另一种吧,多提供一种方法。

1.在plugins和toolbar参数中把image加进去

2.加入配置参数

tinymce.init({
    selector: `#${this.tinymceId}`, // 换成你自己的
    language:'zh_CN',
    plugins: 'image',
    toolbar: 'image',
    images_upload_handler: function (blobInfo, succFun, failFun) {
          var xhr, formData
          var file = blobInfo.blob() //转化为易于理解的file对象
          xhr = new XMLHttpRequest()
          xhr.withCredentials = false

          // 接口地址‘/resource/img/uploads’换成你自己的
          xhr.open('POST', process.env.VUE_APP_BASE_API + '/test/img/uploads')
          // 设置请求头,如果你的接口不需要可以不设置,getToken()是我获取token的方法
          xhr.setRequestHeader('Authorization', 'Bearer ' + getToken())

          xhr.onload = function() {
              var json;
              if (xhr.status != 200) {
                  failFun('HTTP Error: ' + xhr.status);
                  return;
              }
              json = JSON.parse(xhr.responseText);
              if (!json || !json.d || json.d.length === 0 || typeof json.d[0].url !== 'string') {
                  failFun('Invalid JSON: ' + xhr.responseText)
                  return;
              }
              succFun(json.d[0].url)
          }
          formData = new FormData()
          formData.append('files', file, file.name ) // 根据你自己的接口要求来
          formData.append('path', 'test') // 根据你自己的接口要求来
          xhr.send(formData)
        },
});

3.结果如下:

【常规】就还是输入地址,【上传 】可以在自己电脑上选择图片上传。

注意,上传之后图片不是直接显示在富文本框内,而是会以地址的形式再在【常规】里显示,像这样:

然后再点击确定就上传成功了。

额,写的很随意,但主要方法就是这样,根据自己项目的实际情况多调试一下吧。肯定会成功的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值