不晓得如今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