wsemi
Version:
A support package for web developer.
118 lines (95 loc) • 3.99 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-tw">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>examples for domShowInputAndGetFiles</title>
<!-- @babel/polyfill已廢棄 -->
<script nomodule src="https://cdn.jsdelivr.net/npm/@babel/polyfill@7.12.1/dist/polyfill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/wsemi@1.7.19/dist/wsemi.umd.js"></script>
</head>
<body>
<div style="border:1px solid #aaa;">
<div style="margin:10px;">
<button style="display:block;" onclick="listFoldersAndFiles({ multiple: true, entireHierarchy: true })">open folder for entireHierarchy</button>
</div>
<div style="margin:10px;">
<button style="display:block;" onclick="listFoldersAndFiles({ multiple: true })">open folder for multi-files</button>
</div>
<div style="margin:10px;">
<button style="display:block;" onclick="listFoldersAndFiles({ })">open folder for single-file</button>
</div>
<div id="res" style="display:none; padding:10px; border-top:1px solid #ddd; _height:600px; _overflow-y:auto;">
</div>
</div>
<script>
async function _listFoldersAndFiles() {
async function core() {
//showDirectoryPicker
let dirHandle = await window.showDirectoryPicker()
// console.log('dirHandle', dirHandle)
//rs
let rs = []
//getFilesRecursively
async function getFilesRecursively(entry) {
// console.log('getFilesRecursively',entry)
if (entry.kind === 'file') {
let file = await entry.getFile()
if (file !== null) {
//file.relativePath = getRelativePath(entry)
rs.push(file)
}
}
else if (entry.kind === 'directory') {
// let rs = await entry.resolve()
// console.log('rs',rs)
// await wsemi.pmSeries(rs,async (handle)=>{
// await getFilesRecursively(handle)
// })
for await (let handle of entry.values()) {
await getFilesRecursively(handle)
}
}
}
//recursively
await getFilesRecursively(dirHandle)
return rs
}
let r = {
files: [],
errs: {},
}
await core()
.then((files) => {
r.files = files
})
.catch(() => {
})
return r
}
function listFoldersAndFiles(opt){
// wsemi.domShowInputAndGetFiles=_listFoldersAndFiles
//domShowInputAndGetFiles
wsemi.domShowInputAndGetFiles('*', opt)
.then(function(res){
// console.log('res',res)
let c=''
for(let k=0;k<res.files.length;k++){
let v=res.files[k]
// console.log('name=',v.name, 'webkitRelativePath=',v.webkitRelativePath)
c+=(v.webkitRelativePath || v.name)+'\n'
}
if(c===''){
c='no folders or files'
}
// console.log('c',c)
let eleRes=document.querySelector('#'+'res')
eleRes.style.display='block'
eleRes.innerText=c
})
.catch(function(err){
console.log(err)
})
}
</script>
</body>
</html>