javascript - 上传前验证音频文件的持续时间

标签 javascript

是否可以在上传之前以类似于下面示例中的 file.size 的方式检查音频文件的持续时间?

handleSubmit = async event =>
event.preventDefault();

if (this.file && this.file.size > config.MAX_ATTACHMENT_SIZE) {
  alert("Please pick a file smaller than" + config.MAX_ATTACHMENT_SIZE);
    return;
}

最佳答案

如果我们谈论的是浏览器,是的。您可以使用 URL.createObjectURL()在你的 file , 将其用作 src对于 <audio>您创建的元素,等待元素的 canplaythrough事件,然后阅读 duration属性(property)。

事实上,该代码在我最近的回答here 中可用。 (并转载如下);它应该很容易集成到您的代码中。

function computeLength(file) {
  return new Promise((resolve) => {
    var objectURL = URL.createObjectURL(file);
    var mySound = new Audio([objectURL]);
    mySound.addEventListener(
      "canplaythrough",
      () => {
        URL.revokeObjectURL(objectURL);
        resolve({
          file,
          duration: mySound.duration
        });
      },
      false,
    );
  });  
}

关于javascript - 上传前验证音频文件的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51918459/

相关文章:

javascript - JQuery/JavaScript - 滚动到附加 div 上的 anchor

javascript - 为什么在小书签中附加到 innerHTML 会覆盖整个页面?

javascript - jquery:通过 jquery 模拟点击 - 不起作用

JavaScript - FOR 循环内的 IF 语句输出两个选项

javascript - 在 ngClick 上获取数组中的下一项

javascript - Medium-editor:如何应用多个标签包装器?

javascript - CSS 两列动态宽度

javascript - 获取最接近的数组数

javascript - 将文本字段值从一个 html 页面传递到另一页面

javascript - 保存JS屏幕宽高到txt文件