kindeditor粘贴时自动同步上传图片,自动同步上传截图

21 篇文章 0 订阅
12 篇文章 0 订阅

原文博客及下载地址:kindeditor粘贴时自动同步上传图片,自动同步上传截图

体验地址:富文本编辑器Kindeditor升级版Kindeditor-plus体验

以复制粘贴微信文章为例,效果如下图所示:

核心代码如下,在kindeditor创建时添加如下配置,其中上传图片接口请改成我们自己的接口:

 afterCreate: function () {
        var editorObj = this;
        var doc = editorObj.edit.doc;
        $(doc.body).bind('paste', function (event) {
          var cbd = event.originalEvent.clipboardData;
          var ua = window.navigator.userAgent;
          if (cbd.items && cbd.items.length === 2 && cbd.items[0].kind === "string" && cbd.items[1].kind === "file" &&
            cbd.types && cbd.types.length === 2 && cbd.types[0] === "text/plain" && cbd.types[1] === "Files" &&
            ua.match(/Macintosh/i) && Number(ua.match(/Chrome\/(\d{2})/i)[1]) < 49) {
            //不处理
          } else {
            for (var i = 0; i < cbd.items.length; i++) {
              var item = cbd.items[i];
              if (item.kind == "file" && item.type.indexOf("image") > -1) {
                var blob = item.getAsFile();
                if (blob.size > 0) {
                  // 上传粘贴板中的截图到服务器
                  var form = document.imgForm;
                  var formData = new FormData(form);
                  formData.append("file", blob);
                  var loading = layer.load(1, {shade: 0.3});
                  $.ajax({
                    type: "POST",
                    url: editorObj.uploadMultiImgUrl,
                    data: formData,
                    dataType: "json",
                    async: false,
                    processData: false,
                    contentType: false,
                    success: function (res) {
                      layer.close(loading);
                      if (res.success) {
                        var imgStr = '<img src="' + res.data.url + '" title="' + res.data.name + '" alt="' + res.data.name + '"/>';
                        editorObj.insertHtml(imgStr);
                      }
                    }
                  });
                }
              }
            }
          }
          setTimeout(function () {
            // 处理bug
            var useless = $(doc.body).find(".__kindeditor_paste__");
            if (useless) {
              useless.removeAttr("style");
              useless.removeClass("__kindeditor_paste__");
            }
            var imgs = $(doc.body).find("img");
            var compelete = imgs.length;
            var layerindex;
            if (compelete > 0) {
              // 转存时加载弹出层,这里用的是layer
              layerindex = layer.load(1, {
                shade: [0.3, '#fff'],
                content: '网络图片转存中...',
                success: function (layero) {
                  layero.find('.layui-layer-content').css({
                    'padding-top': '39px',
                    'width': '120px',
                    'margin-left': '-60px'
                  });
                }
              });
            }
            $.each(imgs, function (index, item) {
              var _that = $(this);
              var imgSrc = decodeURIComponent(_that.attr("src"));
              if (imgSrc.indexOf("file://") > -1) {//用户本地图片
                // 上传本地图片,暂无
                compelete--;
                if (compelete === 0) {
                  layer.close(layerindex);
                }
              } else if (imgSrc.indexOf("/pub/") === -1) {//根据uri简略判断是不是本网站的图片,请自行更改判断规则
                // ajax异步上传其他网络图片,ajax写法请自从更改
                $.postPayload(ctx + "/admin/attachment/uploadAttaForWebUrl", {url: imgSrc}, function (res) {
                  compelete--;
                  if (compelete === 0) {
                    layer.close(layerindex);
                  }
                  if (res.success) {
                    // 重置图片
                    _that.attr('src', res.data.url);
                    _that.attr('data-ke-src', res.data.url);
                    _that.attr('alt', res.data.name);
                  }
                })
              } else {
                // 本站网络图片不处理
                compelete--;
                if (compelete === 0) {
                  layer.close(layerindex);
                }
              }
            });
          }, 0);
        });
      },

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

imooos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值