通过input点击上传文件夹可以获取到webkitRelativePath
但是拖拽上传获取不到webkitRelativePath
$(".easy-uploader")[0].addEventListener("drop", e => {
e.stopPropagation(); // 防止浏览器打开新的标签页(firefox)
e.preventDefault(); // 阻止拖放后的浏览器默认行为
if (fileType != 'dir') {
//方法二,这种方法另辟蹊径,巧妙的运用了forEach函数,经实验可成功获取文件
filesList.forEach.call(e.dataTransfer.files, function (file) {
filesList.push(file);
}, false);
that.node.list = $(".easy-uploader").parent().parent().children(".uploadLists").children(".drogList");
that.fileObj = { fileList: filesList, isReady: true };
that.node.input = $(".easy-uploader");
that.updateFiles();
that.configs.onChange && that.configs.onChange(filesList);
filesList = [];
}else if (fileType == 'dir') {
let items = e.dataTransfer.items;
for (let i = 0; i <= items.length - 1; i++) {
let item = items[i];
if (item.kind === "file") {
let entry = item.webkitGetAsEntry();
getFileFromEntryRecursively(entry,entry.name);
that.node.list = $(".easy-uploader").parent().parent().children(".uploadLists").children(".drogList");
that.node.input = $(this);
that.fileObj = objFile;
if(i==items.length - 1) {
that.updateFiles();
that.configs.onChange && that.configs.onChange(filesList);
filesList = [];
}
}
}
function getFileFromEntryRecursively(entry,path) {
if (entry.isFile) {
entry.file(file => {
var obj=file;
obj.dir=entry.fullPath;if(obj.dir.indexOf('/')==0) obj.dir=obj.dir.replace('/','');
filesList.push(file);
objFile.fileList = filesList;
objFile.fileList.name = path;
objFile.isReady = true;
}, e => { console.log(e); });
} else {
let reader = entry.createReader();
reader.readEntries(entries => {
entries.forEach(entry => getFileFromEntryRecursively(entry,path));
}, e => { console.log(e); });
}
}
}
})