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


Posted in HTML / CSS onAugust 22, 2017

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

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 + ")");
                    }
                });
            });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
一款利用纯css3实现的win8加载动画的实例分析
Dec 11 HTML / CSS
浅谈CSS3 动画卡顿解决方案
Jan 02 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
html5-canvas中使用clip抠出一个区域的示例代码
May 25 HTML / CSS
鲜为人知的HTML5语音合成功能
May 17 HTML / CSS
HTML5 history新特性pushState、replaceState及两者的区别
Dec 26 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
Jul 28 HTML / CSS
iframe跨域的几种常用方法
Nov 11 HTML / CSS
浅谈Html5页面打开app的一些思考
Mar 30 HTML / CSS
DIV CSS实现网页背景半透明效果
Dec 06 HTML / CSS
table不让td文字溢出操作方法
Dec 24 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
Aug 18 #HTML / CSS
mui几种页面跳转方式对比总结概括
Aug 18 #HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
Aug 18 #HTML / CSS
HTML5 Canvas 旋转风车绘制
Aug 18 #HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
Aug 18 #HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
Aug 17 #HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
Aug 08 #HTML / CSS
You might like
PHP出错界面
2006/10/09 PHP
JpGraph php柱状图使用介绍
2011/08/23 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
村级换届选举方案
2014/05/10 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
党支部承诺书
2015/01/20 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
Redis实现订单过期删除的方法步骤
2022/06/05 Redis