node獲取資料夾中圖片或資料夾
阿新 • • 發佈:2018-12-13
var fs = require("fs"); //引用imageinfo模組 var image = require("imageinfo"); function readFileList(path, filesList) { var files = fs.readdirSync(path); files.forEach(function (itm, index) { var stat = fs.statSync(path + itm); if (stat.isDirectory()) { //遞迴讀取檔案 readFileList(path + itm + "/", filesList) } else { var obj = {};//定義一個物件存放檔案的路徑和名字 obj.path = path;//路徑 obj.filename = itm//名字 filesList.push(obj); } }) } // 自己改進的 function readSubFileList(path, filesList) { var files = fs.readdirSync(path); files.forEach(function (itm, index) { var stat = fs.statSync(path + itm); if (stat.isDirectory()) { //遞迴讀取檔案 var obj = {}; obj.path = itm; obj.filename = []; filesList.push(obj); readSubFileList(path + itm + "/", obj.filename) } else { 不是資料夾就存進obj.filename|filesList filesList.push(itm) //名字 } }) } var getFiles = { //獲取資料夾下的所有檔案 getFileList: function (path) { var filesList = []; readFileList(path, filesList); return filesList; }, getSubFileList:function (path) { var filesList = []; readSubFileList(path, filesList); return filesList; }, //獲取資料夾下的所有圖片 getImageFiles: function (path) { var imageList = []; this.getFileList(path).forEach((item) => { var ms = image(fs.readFileSync(item.path + item.filename)); ms.mimeType && (imageList.push(item.filename)) }); return imageList; }, //獲取資料夾下所有非圖片的檔案 2018年8月18日 19:15:13更新 getTxtList: function (path) { return this.getFileList(path).filter((item) => { var ms = image(fs.readFileSync(item.path + item.filename)); return !ms.mimeType }); } };