html拖拽事件 上传,html5使用Drag事件编辑器拖拽上传图片的示例代码

本文介绍了如何使用seajs定义的tools模块实现富文本编辑器中的图片粘贴上传和拖拽上传功能。通过监听paste和drop事件,获取图片数据并转化为base64,然后使用Ajax上传到服务器。同时提供了parseimg方法用于解析粘贴内容中的外部图片。该功能适用于提升在线编辑器的用户体验。
摘要由CSDN通过智能技术生成

本站的编辑器图片上传便是使用的这部分

seajs 定义tools模块

/**

* created by zhaojunlike on 8/22/2017.

*/

define(function (require, exports, module) {

/**

* 截图粘贴

* @param selector

* @param callback

*/

exports.paste = function (selector, callback) {

document.queryselector(selector).addeventlistener("paste", function (ev) {

var data = ev.clipboarddata;

var items = (event.clipboarddata || event.originalevent.clipboarddata).items;

for (var i in items) {

var item = items[i];

//如果是图片

if (item.kind === 'file' && item.type.indexof('image') > -1) {

var blob = item.getasfile();

var reader = new filereader();

//reader读取完成后,xhr上传

reader.onload = function (event) {

var base64 = event.target.result;

//ajax上传图片

//返回一个base64数据

var img = {type: item.type, kind: item.kind};

if (typeof callback === "function") {

callback(event.target.result, img, event);

}

}; // data url!

reader.readasdataurl(blob);//reader

}

}

});

};

/**

* 拖拽上传

* @param selector

* @param callback

*/

exports.drag = function (selector, callback) {

var element = document.queryselector(selector);

element.addeventlistener("drop", function (e) {

e.preventdefault();

var files = e.datatransfer.files;

for (var i = 0; i < files.length; i++) {

//回调文件

//alert("drop " + file[i].name.tostring());

var reader = new filereader();

var item = files[i];

reader.onload = function (event) {

var base64 = event.target.result;

//返回一个base64数据

var img = {type: item.type, name: item.name};

if (typeof callback === "function") {

callback(event.target.result, img, event);

}

};

reader.readasdataurl(files[i]);//reader

}

return false;

});

element.addeventlistener("dragenter", function (e) {

e.stoppropagation();

e.preventdefault();

});

element.addeventlistener("dragover", function (e) {

e.datatransfer.dropeffect = "copy";

e.stoppropagation();

e.preventdefault();

});

document.body.addeventlistener("dragover", function (e) {

e.stoppropagation();

e.preventdefault();

return false;

});

}

/**

* 解析粘贴过来的内容,看是否有不是本站的图片,解析出来上传到本站

*/

exports.parseimg = function () {

}

});

使用方法:

//粘贴上传图片

edtools.paste("#post_content", function (base64, image, event) {

$.post("{:url('api/uploader/upeditorimg')}",{base:base64}, function (ret) {

layer.msg(ret.msg);

if (ret.code === 1) {

//新一行的图片显示

editor.insertvalue("\n![" + ret.data.title + "](" + ret.data.path + ")");

}

});

});

//拖拽上传图片

edtools.drag("#post_content", function (base64, image, event) {

$.post("{:url('api/uploader/upeditorimg')}",{base:base64}, function (ret) {

layer.msg(ret.msg);

if (ret.code === 1) {

//新一行的图片显示

editor.insertvalue("\n![" + ret.data.title + "](" + ret.data.path + ")");

}

});

});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值