Drag事件编辑器实现拖拽上传图片效果


本文摘自PHP中文网,作者php中世界最好的语言,侵删。

这次给大家带来Drag事件编辑器实现拖拽上传图片效果Drag事件编辑器实现拖拽上传图片效果的注意事项有哪些,下面就是实战案例,一起来看一下。

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

Seajs 定义Tools模块

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

/**

 * 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 () {

    }

});

使用方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//粘贴上传图片

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

        }

    });

});

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

H5的LocalStorage本地存储使用详解

自定义实现可以播放暂停、进度拖拽、音量控制及全屏的H5播放器

以上就是Drag事件编辑器实现拖拽上传图片效果的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

h5实现拖拉上传文件

html 编辑器

h5实现多图片预览上传及点击可拖拽控件

html5实现简单图片上传所遇到的问题及解决办法

html里怎样实现异步上传文件

Drag事件编辑器实现拖拽上传图片效果

html5元素拖拽Drag与拖放drop相关api的具体介绍(图文)

h5文件异步上传

html5讲解之拖拽事件Dragstart、DragDragend

详解html5实现微信拍摄上传照片的功能

更多相关阅读请进入《Drag》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...