使用JS的input框实现音频文件的上传与播放功能
<input type="file" accept="audio/*" @change="handleFileChange">
<audio ref="audioPlayer" controls></audio>
type="file"
:指定为文件上传类型。accept="audio/*"
:限制上传文件类型为音频。@change="handleFileChange"
:绑定 change 事件,当用户选择文件后触发。ref="audioPlayer"
:用于在 JavaScript 中引用该元素。controls
:显示音频播放控件。
<script>
export default {
data() {
return {
audioUrl: null
};
},
methods: {
handleFileChange(event) {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = (e) => {
this.audioUrl = e.target.result;
this.$refs.audioPlayer.src = this.audioUrl;
};
reader.readAsDataURL(file);
}
}
}
</script>
handleFileChange
方法。handleFileChange
方法:
onload
事件处理函数:
audioUrl
。audioUrl
赋值给 audio 标签的 src
属性,实现音频播放。
<template>
<input type="file" accept="audio/*" @change="handleFileChange">
<audio ref="audioPlayer" controls :src="audioUrl"></audio>
</template>
<script>
export default {
data() {
return {
audioUrl: null
};
},
methods: {
handleFileChange(event) {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = (e) => {
this.audioUrl = e.target.result;
};
reader.readAsDataURL(file);
}
}
}
</script>
src
属性指定音频源。audioUrl
与 audio
标签的 src
属性绑定,实现动态更新。accept
属性限制上传的音频格式,例如 accept="audio/mpeg,audio/wav"
。handleFileChange
方法中添加文件大小判断。FileReader
的 onprogress
事件实现上传进度显示。通过以上步骤,你就可以在 Vue 项目中实现基本的音频上传和播放功能了。