我正在制作一个只需要在本地运行的html网页(离线网站)。使用"输入文件标签",用户选择并给出需要播放的视频文件路径。对于视频播放器,我使用的是 html 的视频标签。
我尝试使用以下代码执行此操作,但视频无法播放。请帮助我。
注意:这是一个离线网站。
法典:
<html>
<head>
<script>
function func() {
var videolink = document.getElementById('fileID');
var player = document.getElementById('videoID');
var mp4Vid = document.getElementById('sourceID');
$(mp4Vid).attr('src',videolink);
player.load();
player.play();
}
</script>
</head>
<body>
<input type="file" id="fileID" />
<input type="button" onClick="func();"/>
<center>
<video id="videoID" width="320" height="240" controls autoplay>
<source id="sourceID" type="video/mp4">
</video>
</center>
</body>
</html>
尝试更改以下内容:
$(mp4Vid).attr('src',videolink);
关于这一点:
$(mp4Vid).attr('src', '' + videolink).appendTo($('#sourceID'));
你不能单独使用 JavaScript,除非在现代浏览器上。
问题
这是一项 Web 浏览器安全功能,用于遮挡文件上传的完整路径。如果您尝试读取文件上传字段的值,您将收到如下所示的内容:
$('input[type="file"]').val(); // "C:fakepathsome_file.mp4"
即使在这个假设中该文件存在于我的桌面上(例如,~/Desktop/some_file.mp4
)。
解决方法
在现代浏览器上,请参阅"在HTML5中如何在上传前显示图像预览?",以对文件输入使用FileReader
并使用其源。否则,您可能可以使用已安装的Adobe Flash执行此操作。