博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
html5使用Drag事件编辑器拖拽上传图片
阅读量:7004 次
发布时间:2019-06-27

本文共 3817 字,大约阅读时间需要 12 分钟。

使用场景

  • 图片的拖拽指定区域进行上传
  • 图片粘贴进行上传功能

核心api参考

FileclipboardData

案例代码

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

转载地址:http://apytl.baihongyu.com/

你可能感兴趣的文章
断路器HystrixCircuitBreaker
查看>>
前端爬坑之旅--echarts渲染时canvas变为100px
查看>>
CODING 最佳实践:快课网研发效能提升之路
查看>>
实现一个平行四边形
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
elasticsearch v6.5.4配置
查看>>
Python2+Selenium入门01-环境准备
查看>>
golang协程池设计
查看>>
微服务之数据同步Porter
查看>>
phpStudy 升级 mysql5.7 出现的问题
查看>>
mp4文件如何转换为webm格式
查看>>
(一)如何实现一个单进程阻塞的网络服务器
查看>>
微信小程序设置上一页数据
查看>>
两种让用户自定义项目主题色的方案
查看>>
android 中文字体向上偏移解决方案
查看>>
Project-Euler第69题
查看>>
Spring Cloud OAuth2 资源服务器CheckToken 源码解析
查看>>
jQuery DOM操作
查看>>
高频写入redis场景优化
查看>>
一直在做业务的程序员技术会进步吗?我们该如何跳出舒适圈
查看>>