如何用Node.js+fs将服务器文件夹图片存入独立索引数组
问题解决
核心问题原因
你把getFolderFiles返回的数组额外套了一层数组,导致images变成了二维数组,所以images[0]是整个图片列表,而非单个图片。
修正第一步:构建正确的一维图片数组
把images = [getFolderFiles("./broll", ".jpg")];改成直接赋值即可解决:
const fs = require("fs"); function getFolderFiles(path, extension) { let files = fs.readdirSync(path); // 调整正则逻辑:避免传入带点的extension时匹配出错 return files.filter((file) => file.match(new RegExp(`\\.${extension.replace('.', '')}$`, "i")) ); } // 直接接收函数返回的数组,不需要额外套[] const images = getFolderFiles("./broll", ".jpg"); console.log(images[0]); // 输出image1.jpg console.log(images[1]); // 输出image2.jpg
进阶:生成你需要的对象数组
如果要构建包含path、caption、loop的目标数组,可遍历图片列表生成对象:
const fs = require("fs"); const folderPath = "./broll"; function getFolderFiles(path, extension) { let files = fs.readdirSync(path); return files.filter((file) => file.match(new RegExp(`\\.${extension.replace('.', '')}$`, "i")) ); } const imageFiles = getFolderFiles(folderPath, ".jpg"); // 映射生成目标结构 const images = imageFiles.map((fileName) => { return { path: `${folderPath}/${fileName}`, caption: "", // 可根据需求填充,比如从文件名提取或读取配置 loop: imageFiles.length // 示例用总图片数作为loop值 }; }); console.log(images); // 输出示例: // [ // { path: './broll/image1.jpg', caption: '', loop: 3 }, // { path: './broll/image2.jpg', caption: '', loop: 3 }, // { path: './broll/image3.jpg', caption: '', loop: 3 } // ]
内容的提问来源于stack exchange,提问作者SyntheticTV
相关产品推荐
相关产品推荐

