electron 文件及文件夹上传的问题探索

0

不晓得现在electron最新版的dialog解决了这个问题没有 选择文件夹的时候没有返回文件夹里面所有的文件 而是返回了文件夹的路径
同样的在网页端是可以通过webkitDirectory获取到文件夹下面所有的文件

我试了很多的方式 下面的方式是可以成功上传文件夹下面所有的文件(这里单文件的上传不在叙述 只讨论文件夹的上传)
本人业务需要 添加了一些你可能不用的参数 所以逻辑是这个 具体就看你自己的做法

第一 通过dialog获取到文件夹的路径 定义为dirpath.
第二 通过node的fs读取文件夹下的所有文件路径 代码大概如下:

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)
                      }
                  }
              })
          })
      }
  })
}      

第三 生成文件

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 upload组件的源码 我是通过修改它的源码来改进的

我是参考这个搞出来的:https://blog.csdn.net/Wbiokr/...

你可能感兴趣的

载入中...