从操作系统拖拽图片到指定区域进行预览

本文介绍了一种通过拖拽方式将图片文件上传至浏览器并实时预览的技术实现方案。利用HTML5的拖放API与FileReader接口,该方法允许用户直接将图片从文件夹拖拽到指定区域进行即时展示。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #demo2 {
            margin: 20px;
        }
        #demo2 .preview {
            height: 300px;
            background: #ddd;
        }
        #demo2 li {
            float: left;
            margin-left: 40px;
        }
        #demo2 img {
            max-height: 150px;
            width: auto;
        }
    </style>

</head>
<body>
<div id="demo2">
    <h3>从文件夹中拖拽图片到下面的区域进行预览</h3>
    <ul class="preview"></ul>
</div> <!-- demo2 -->

<script>
    (function (w) {
        var doc = w.document;

        var dnd = {
            init: function () {
                var me = this;
                var preview = doc.querySelector('#demo2 .preview');

                preview.addEventListener('dragover', function (e) {
                    e.preventDefault();
                }, false);

                preview.addEventListener('drop', function (e) {
                    // 操作系统拖放文件到浏览器需要取消默认行为
                    e.preventDefault();

                    [].forEach.call(e.dataTransfer.files, function (file) {
                        if (file && file.type.match('image.*')) {
                            var reader = new FileReader();

                            reader.onload = function (e) {
                                var img = doc.createElement('img');
                                img.src = e.target.result;
                                var li = doc.createElement('li');
                                li.appendChild(img);
                                preview.appendChild(li);
                            };

                            reader.readAsDataURL(file);
                        }
                    });
                }, false);
            }

        };

        dnd.init();
    }(window));
</script>
</body>
</html>

参考来源 https://segmentfault.com/a/1190000002810962

转载于:https://www.cnblogs.com/scnuwangjie/p/6054850.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值