不曉得如今electron最新版的dialog解決了這個問題沒有 選擇文件夾的時候沒有返回文件夾裏面全部的文件 而是返回了文件夾的路徑
一樣的在網頁端是能夠經過webkitDirectory獲取到文件夾下面全部的文件node
我試了不少的方式 下面的方式是能夠成功上傳文件夾下面全部的文件(這裏單文件的上傳不在敘述 只討論文件夾的上傳)
本人業務須要 添加了一些你可能不用的參數 因此邏輯是這個 具體就看你本身的作法web
第一 經過dialog獲取到文件夾的路徑 定義爲dirpath.
第二 經過node的fs讀取文件夾下的全部文件路徑 代碼大概以下:ajax
function fileDisplay(dirpath){ fs.readdir(dirpath,(err,files)=>{ if(err){console.log(err)}else{ files.forEach((filename)=>{ var filedir = path.join(paths,filename); fs.stat(filedir,(error,stats)=>{ if(error){}else{ var isFile = stats.isFile(); var isDir = stats.isDirectory(); if(ifFile){ fs.readFile(fileDir,(eror,data)=>{ if(err) throw err; filepack(data,filedir) }) } if(ifDir){ fileDisplay(fileDir) } } }) }) } }) }
第三 生成文件app
function filepack(data,filepath){ let = filename = filepath.split('\\')[filepath.split('\\).length-1]; let file = new File([data],filename,{type:'image/'+filepath.split('.').reverse()[0]}); let fileData = new FormData(); fileData.append('file',file); fileData.append('filename',filename); let fileUploadData = fileData.getAll('file')[0]; post(fileUploadData) } function post(file){ //提交 ajax.post() }
第三步中的 new File那步中我直接用image是能夠上傳任意其餘格式的文件的 目前沒有發現會受這個的影響 有更好的方式的朋友能夠給我說哈 iview
再次說明 直接用代碼確定是不行的 由於去掉了不少中間的不重要的步驟 可是基本的三個是上面的幾個
上傳的代碼參考iview upload組件的源碼 我是經過修改它的源碼來改進的electron
我是參考這個搞出來的:https://blog.csdn.net/Wbiokr/...post