You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript一次性获取文件夹中多个MP3文件的属性?

我来帮你搞定这个问题!其实完全可行哈,不过得看你是在浏览器里做前端页面,还是用Node.js跑本地脚本,两种场景的实现逻辑不太一样,我给你拆解清楚:

浏览器端(前端网页)实现步骤

浏览器出于安全限制,不能直接自动访问本地文件夹,得让用户手动选择,不过我们可以借助特殊的文件选择控件来实现:

  • 第一步:添加支持文件夹选择的输入框
    在页面里插入这个HTML控件,它会允许用户选择整个文件夹:
    <input type="file" id="folderInput" webkitdirectory multiple />
    
  • 第二步:监听选择事件,生成目标对象数组
    用JS处理选中的文件,过滤出MP3并生成你需要的对象:
    const folderInput = document.getElementById('folderInput');
    const objectArray = [];
    
    folderInput.addEventListener('change', (e) => {
      const files = e.target.files;
      // 遍历所有选中的文件,只处理MP3
      for (let i = 0; i < files.length; i++) {
        const file = files[i];
        if (file.type === 'audio/mpeg') {
          // 用对象字面量创建目标对象,比new Object()更规范清晰
          const musicObj = {
            name: file.name.replace('.mp3', ''), // 可选择去掉后缀,保留完整文件名就用file.name
            src: URL.createObjectURL(file) // 生成网页可直接使用的临时音频链接
          };
          objectArray.push(musicObj);
        }
      }
      // 现在objectArray里就是所有符合要求的对象啦
      console.log(objectArray);
    });
    
Node.js端(本地脚本)实现步骤

如果是在本地跑脚本处理文件夹里的MP3,Node.js可以直接访问文件系统,不需要用户手动操作:

  • 第一步:导入文件系统和路径模块,指定目标文件夹路径
  • 第二步:读取文件夹内容,过滤出MP3文件
  • 第三步:遍历生成对象数组

代码示例(异步版本,更适合Node.js的异步特性):

const fs = require('fs');
const path = require('path');

// 替换成你的MP3文件夹实际路径
const musicFolderPath = './my-mp3-collection';
const objectArray = [];

fs.readdir(musicFolderPath, (err, files) => {
  if (err) {
    console.error('读取文件夹出错:', err);
    return;
  }
  // 遍历文件,筛选MP3并生成对象
  files.forEach(file => {
    if (path.extname(file).toLowerCase() === '.mp3') {
      const musicObj = {
        name: path.basename(file, '.mp3'), // 去掉后缀的文件名
        src: path.resolve(musicFolderPath, file) // 文件的绝对路径,也可以用相对路径
      };
      objectArray.push(musicObj);
    }
  });
  console.log('生成的对象数组:', objectArray);
});

如果是简单脚本,也可以用同步读取的方式:

const files = fs.readdirSync(musicFolderPath);
files.forEach(file => {
  // 同上的筛选和对象生成逻辑
});

补充一句:你预想的代码里new Object(musicFolder[i].title, ...)写法不太规范,JS里创建对象更推荐用对象字面量({key: value}),就像上面示例里的写法,可读性和维护性更好。

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:32:05