在上传之前验证音频文件的持续时间

时间:2018-08-19 14:06:37

标签: 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;
}

1 个答案:

答案 0 :(得分:1)

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

事实上,该代码可在我最近的答案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,
    );
  });  
}