前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js中,如何获取批量传入文件的大小,名称,进行循环展示。

js中,如何获取批量传入文件的大小,名称,进行循环展示。

作者头像
用户4344670
发布2022-09-02 17:07:04
10K0
发布2022-09-02 17:07:04
举报
文章被收录于专栏:vue的实战
代码语言:javascript
复制
        <div class="handle">
                <div class="handle-box" id="drop_area" v-on:drop="dropClick">
                    <div class="handle-btn">
                        <img class="btn-icon" src="./images/compress/new-btn-icon.png" alt="">
                        选择图片
                        <input class="in-btn" id="upload" v-on:change="change" type="file" value=""
                            multiple="multiple" />

                    </div>
                    <p class="handle-desc">或将图片拖拽到此处</p>
                    <p class="handle-txt">支持格式:JPG、PNG、GIF、BMP</p>
                </div>
            </div>
            <div class="compress-list" v-if=" list.length > 0 " v-cloak>
                <ul class="tab-header">
                    <li class="header1 tab-txt">文件名</li>
                    <li class="header2 tab-txt">压缩前</li>
                    <li class="header3 tab-txt">状态</li>
                    <li class="header4 tab-txt">压缩率</li>
                    <li class="header5 tab-txt">操作</li>
                </ul>
                <ul class="tab-header tab-list" v-for="(item,i) in list" :key="i">
                    <li class="header1 tab-txt">{{item.name}}</li>
                    <li class="header2 tab-txt">{{(item.size/1024).toFixed(2)}}KB</li>
                    <li class="header3 tab-txt">
                        <div class="line2" v-if="item.onCompress == 1">
                            <div class="m-line"></div>
                            <div class="move"> </div>
                        </div>
                        <div class="line3" v-if="item.onCompress == 2">
                            <div class="line3-box"></div>
                        </div>
                    </li>
                    <li class="header4 tab-txt">-{{item.onCompress == 2 ? item.number +'%' : ''}}</li>
                    <li class="header5 tab-txt cur" @click="downFile">
                        <span v-if="item.onCompress == 2" class="down dFile">下载</span>
                        <span v-else class="dFile">取消</span>
                    </li>
                </ul>

            </div>

代码语言:javascript
复制
$(function () {

    var app = new Vue({
        el: '.model',
        data: function () {
            return {
                active: 1,
                onCompress: 1,
                list: [],
            }
        },
        mounted: function () {

            document.addEventListener("drop", function (e) {  //拖离   
                e.preventDefault();
            })
            document.addEventListener("dragleave", function (e) {  //拖后放   
                e.preventDefault();
            })
            document.addEventListener("dragenter", function (e) {  //拖进  
                e.preventDefault();
            })
            document.addEventListener("dragover", function (e) {  //拖来拖去    
                e.preventDefault();
            })

        },
        destroyed: function () {

        },
        methods: {
            getRandom: function (n, m) {
                var num = Math.floor(Math.random() * (m - n + 1) + n)
                return num
            },
/// 通过 change 时间获取文件
            change: function () {
                var obj = document.getElementById("upload");
                var len = obj.files.length;
                var that = this;
                for (let i = 0; i < len; i++) {
                    obj.files[i].onCompress = 1;
                    var number = this.getRandom(70, 80)
                    obj.files[i].number = number;
                    setTimeout(function () {
                        for (let j = 0; j < len; j++) {
                            obj.files[j].onCompress = 2;
                            that.$forceUpdate();
                        }
                    }, 500)
                    this.list.push(obj.files[i])
                }
            },
            dropClick: function (e) {
///  拖拽情况获取文件
                var fileList = Array.from(e.dataTransfer.files);
                var that = this;

                for (var i = 0; i < fileList.length; i++) {
                    fileList[i].onCompress = 1;
                    var number = this.getRandom(70, 80)
                    fileList[i].number = number;
                    setTimeout(function () {
                        for (let j = 0; j < fileList.length; j++) {
                            fileList[j].onCompress = 2;
                            that.$forceUpdate();
                        }

                    }, 500)
                    that.list.push(fileList[i]);
                }
            },
            downFile: function () {
                $('#dialog').show()
            },
            changeActive: function (v) {
                this.active = v;
            }
        }
    });
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档