通过FileReader API获取上传音频的长度

前言

FileReader 接口允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。

实现 

调用FileReader API,并通过(window.AudioContext || window.webkitAudioContext)()创建音频上下文对象实现

代码示例

关键代码

const customRequest = (file) => {
  //创建FileReader
  const fileReader = new FileReader();
  //读取成功完成时触发
  fileReader.onload = (event) => {
    const arrayBuffer = event.target.result;
    //创建音频上下文对象
    const audioContext = new (window.AudioContext ||
      window.webkitAudioContext)();
    audioContext.decodeAudioData(arrayBuffer, async (buffer) => {
      const duration = Math.floor(buffer.duration); // 获取音频时长
      console.log("音频时长:", duration);
      //下面可做对音频时长限制的操作
    });
  };
  //当读取由于错误而失败时触发。
  fileReader.onerror = (error) => {
    console.error("Error reading file:", error);
  };
  //开始读取指定的 Blob 中的内容,读取完成,result 属性中将包含一个表示文件数据的 ArrayBuffer 对象
  fileReader.readAsArrayBuffer(file);
};

注意:最后一定要记得调用readAsArrayBuffe来读取内容,不然获取不到FileReader的上下文。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用HTML5 FileReader API读取Excel文件,可以使用以下步骤: 1. 在HTML页面中添加一个文件上传控件,例如: ```html <input type="file" id="fileInput" /> ``` 2. 使用JavaScript获取文件上传控件,并添加一个`change`事件监听器来获取用户选择的文件: ```javascript const fileInput = document.getElementById('fileInput'); fileInput.addEventListener('change', handleFileSelect, false); function handleFileSelect(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = handleFileLoad; reader.readAsBinaryString(file); } ``` 在这个示例中,我们获取了文件上传控件元素,并为其添加了一个`change`事件监听器。当用户选择了一个文件时,事件监听器会调用`handleFileSelect`函数来处理文件。 3. 在`handleFileSelect`函数中,我们创建了一个`FileReader`对象,并使用`readAsBinaryString`方法将文件读入内存: ```javascript function handleFileSelect(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = handleFileLoad; reader.readAsBinaryString(file); } ``` 注意,我们使用了`readAsBinaryString`方法来读取二进制数据,因为Excel文件是二进制文件。 4. 一旦文件被读入内存,`FileReader`对象的`onload`事件将会被触发。我们可以在事件处理函数中访问文件的二进制数据: ```javascript function handleFileLoad(event) { const data = event.target.result; const workbook = XLSX.read(data, { type: 'binary' }); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 }); console.log(jsonData); } ``` 在这个示例中,我们使用`XLSX.read`方法来将二进制数据转换成一个`Workbook`对象。然后,我们选择要读取的工作表,并将其转换成JSON格式的数据。最后,我们将数据打印到控制台上。 需要注意的是,这个示例代码只是一个简单的例子。在实际应用中,你可能需要处理更复杂的Excel文件,例如包含多个工作表或带有复杂格式的表格。你需要根据具体情况进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值