input 遍历上传文件夹

js上传文件夹

上传文件夹遍历

以下就是遍历上传文件夹里面的文件夹和文件的方法,直接复制:
这是本人第一次纯js写上传文件夹遍历,写的比较low,喜欢的盆友可以点个关注,你们的关注是我向上的动力
h5部分:

multiple=“multiple” @change=“changesData($event)” style=“display:none”/>

js部分
async changesData (event) {
let that = this;
let lists = Array.from(event.target.files);
//分割地址字符串获取文件夹名称
let fileNames = lists[lists.length-1].webkitRelativePath.split(’/’);
//用来存储已建文件夹和文件夹id
let arrs = [];
//第一次遍历上传文件夹 lists最后一条数据
for(let i=0;i //文件夹名
let title= fileNames[i];
//新建文件夹接口上传对象
let postData = {};
if(i>0){
postData[‘folder_pid’] = that.file_id;
}else {
if (that.folder_id > 0)postData[‘folder_pid’] = that.folder_id;
}
postData.title = title;
//新建文件夹
await api.addFolderPost(postData).then(res => {
if (res.code != ‘1’) {
that.$message({
message: res.msg,
center: true,
type: ‘error’,
});
}else {
let id = res.data.result.id;
this.file_id = res.data.result.id;
if(i>1){
//记录已经创建的文件夹和文件夹id 创建二级文件名字拼接防止下级(3级)以后文件夹同名 i代表文件夹级数
let num = Number(i)-1;
arrs.push({
title:fileNames[num]+title+i,
id:id
});
}else {
//创建一级 二级 文件夹 记录已经创建的文件夹id i代表文件夹级数
arrs.push({
title:title+i,
id:id
});
}
//遍历上传文件 只上传刚刚创建的文件夹下的文件
for(let x=0;x //分割地址字符串获取文件夹名
let webpath = lists[x].webkitRelativePath.split(’/’);
if(i>1){
let inum = Number(i)-1;
//二级以后的上传的文件 拼接上一级文件夹名称跟需要上传的文件夹做比较 防止出现文件传错文件夹
//遍历上传文件 判断是否是本文件夹下的文件
if(webpath[inum]+webpath[i] == fileNames[inum]+title && webpath[Number(i)+2] == undefined){
let file = lists[x];//上传的文件
this.subscribe(file,i,id,‘0’);
}
}else {
//遍历上传文件 判断是否是本文件夹下的文件
if(webpath[i] == title && webpath[Number(i)+2] == undefined){
let file = lists[x];//上传的文件
this.subscribe(file,i,id,‘0’);
}
}
}

                    }
                })
            }
            //第二次遍历上传文件夹  lists剩下没有创建的文件夹
            for(let i=0;i1){
                            let num = Number(y)-1;
                            //二级以后的文件夹跟title对比需要拼接上一级文件夹名字,防止出现三级以及后面的文件夹创建在错误的二级文件夹内
                            if(arrs[x].title == webkitRelativePath[num]+title+y){
                                bool = false;
                            }
                        }else {
                            if(arrs[x].title == title+y){
                                bool = false;
                            }
                        }
                    }
                    if(bool){
                        let postData = {};
                        if(y>0){
                            //遍历记录已经创建的文件夹数组
                            for(let x=0;x1){
                                    let numy = Number(y)-1;
                                    let numx = Number(y)-2;
                                    //获取需要创建文件夹的上一级文件夹id
                                    if(arrs[x].title == webkitRelativePath[numx]+webkitRelativePath[numy]+numy){
                                        that.folder_pid = arrs[x].id;
                                    }
                                }else {
                                    let numy = Number(y)-1;
                                    //获取需要创建文件夹的上一级文件夹id
                                    if(arrs[x].title == webkitRelativePath[numy]+numy){
                                        that.folder_pid = arrs[x].id;
                                    }
                                }
                            }
                            postData['folder_pid'] = that.folder_pid;
                        }else {
                            if (that.folder_id > 0)postData['folder_pid'] = that.folder_id;
                        }
                        postData.title = title;
                        //新建文件夹
                        await api.addFolderPost(postData).then(res => {
                            if (res.code != '1') {
                                that.$message({
                                    message: res.msg,
                                    center: true,
                                    type: 'error',
                                });
                            }else {
                                let id = res.data.result.id;
                                this.file_id = res.data.result.id;
                                if(y>1){
                                    //记录已经创建的文件夹和文件夹id 创建二级文件名字拼接防止下级(3级)以后文件夹同名 y代表文件夹级数
                                    let num = Number(y)-1;
                                    arrs.push({
                                        title:webkitRelativePath[num]+title+y,
                                        id:id
                                    });
                                }else {
                                    //记录已经创建的文件夹和文件夹id y代表文件夹级数
                                    arrs.push({
                                        title:title+y,
                                        id:id
                                    });
                                }

                                //遍历上传文件  只上传刚刚创建的文件夹下的文件
                                for(let x=0;x1的是二级以后的文件夹 <1的是一二级文件夹
                                    if(y>1){
                                        let ynum = Number(y)-1;
                                        //判断是否是本文件夹下的文件
                                        if(webpath[ynum]+webpath[y] == webkitRelativePath[ynum]+title && webpath[Number(y)+2] == undefined){
                                            let file = lists[x];//上传的文件
                                            this.subscribe(file,Number(i)+1,id,'1',lists.length);
                                        }
                                    }else {
                                        //判断是否是本文件夹下的文件
                                        if(webpath[y] == title && webpath[Number(y)+2] == undefined){
                                            let file = lists[x];//上传的文件
                                            this.subscribe(file,Number(i)+1,id,'1',lists.length);
                                        }
                                    }
                                }
                            }
                        })
                    }
                }
            }
        },

你可能感兴趣的:(vue.js,javascript,html)