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 相关文章推荐
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
Mar 09 HTML / CSS
CSS3美化表单控件全集
Jun 29 HTML / CSS
css3.0 图形构成实例练习一
Mar 19 HTML / CSS
用CSS3实现背景渐变的方法
Jul 14 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
css3实现书本翻页效果的示例代码
Mar 08 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
HTML5标签小集
Aug 02 HTML / CSS
浅谈three.js中的needsUpdate的应用
Nov 12 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
Jan 09 HTML / CSS
html5 canvas实现给图片添加平铺水印
Aug 20 HTML / CSS
html5拖拽应用记录及注意点
May 27 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实现监控varnish缓存服务器的状态
2014/12/30 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
php取出数组单个值的方法
2018/03/12 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
Jquery显示、隐藏元素以及添加删除样式
2013/08/09 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Python实现二维数组输出为图片
2018/04/03 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
Python实现简单的2048小游戏
2021/03/01 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
党员的自我评价范文
2014/01/02 职场文书
优秀医生事迹材料
2014/02/12 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
基层党支部整改方案
2014/10/25 职场文书
个人委托书范文
2015/01/28 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
python异常中else的实例用法
2021/06/15 Python