You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现用户上传视频并点击按钮加载至video标签预览?

视频预览功能实现修正方案

你说得没错,直接把File对象赋值给video元素的src属性确实无法生效——video的src需要接收URL地址,而非File实例。正确的做法是使用URL.createObjectURL()方法将本地文件对象转换为浏览器可识别的临时Blob URL,以此实现视频预览。

修正后的HTML代码

<html>
    <body>
        <input type="file" accept="video/mp4" id="videoinput">
        <!-- 添加controls属性方便播放控制,同时闭合video标签 -->
        <video id="videopreview" controls></video>
        <button onclick="loadvideo()">加载视频</button>
        <!-- 修正script标签的语法错误 -->
        <script src="myscript.js"></script>
    </body>
</html>

修正后的JavaScript代码

function loadvideo() {
    // 获取上传的文件对象
    const videoFile = document.getElementById('videoinput').files[0];
    const videoElement = document.getElementById('videopreview');
    
    if (!videoFile) {
        alert('请先选择视频文件');
        return;
    }

    // 生成临时Blob URL并赋值给video的src
    const videoUrl = URL.createObjectURL(videoFile);
    videoElement.src = videoUrl;

    // 可选:视频加载完成后释放临时URL资源,避免内存泄漏
    videoElement.onloadeddata = function() {
        URL.revokeObjectURL(videoUrl);
    }
}

关键说明

  • URL.createObjectURL():将File/Blob对象转换为临时本地URL,浏览器会自动管理该URL的生命周期,手动调用URL.revokeObjectURL()可更早释放资源。
  • 原代码问题:HTML中script标签语法错误(type属性写法错误且未闭合)、video标签未闭合、缺少播放控制按钮(controls属性);JS未做文件存在性判断。

内容的提问来源于stack exchange,提问作者user22871601

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:11:11