是否可以在下例中以类似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;
}
答案 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,
);
});
}