Javascript FileReader 在处理大文件时无法触发事件。

3
我正在尝试从客户端计算机上播放视频文件。问题在于很难获取绝对路径,以便我可以将其放入videosrcobjectdata属性中。最终,我发现了FileReader对象,并且它可以很好地处理小文件。然而,当读取大文件(200MB+)时,它不会触发onload事件。没有错误,FileReader.onerror没有触发任何内容,try/catch也无法帮助。开发者控制台没有显示任何信息。
我认为这与每个浏览器配置的最大文件大小有关,但我找不到配置的方法。请帮忙解决?
以下是代码:
function onclick()
{
            var file_dialog = document.getElementById("file_dialog");
            var path_dialog = document.getElementById("path_dialog");
            var video_player = document.getElementById("video_player");
            var begin_video = document.getElementById("begin_video");
            var reading_progress = document.getElementById("reading_progress");
            file_dialog.onchange = function ()
            {
                begin_video.disabled = file_dialog.files.length == 0 || path_dialog.files.length == 0;
            };
            path_dialog.onchange = file_dialog.onchange;
            begin_video.onclick = function ()
            {
                begin_video.disabled = true;
                var reader = new FileReader();
                reader.onload = function (e)
                {
                    video_player.src = e.target.result;
                    begin_video.disabled = false;
                };
                reader.onprogress = function (e)
                {
                    reading_progress.textContent = "Reading... " + (Math.floor(e.loaded / e.total * 10000) / 100) + "%";
                };
                reader.onloadend = function (e)
                {
                    if (e.target.error != null)
                        reading_progress.textContent = e.target.error.code;
                    else
                        reading_progress.textContent = "FINISHED!!!";
                };
                reader.onerror = alert;
                reader.readAsDataURL(file_dialog.files[0]);
                var reader2 = new FileReader();
                reader2.onload = function (e)
                {

                };
            };
}
1个回答

0

这个问题没有浏览器配置设置。

我也使用了FileReader和大文件(高达50 MB),不同的浏览器表现非常不同:

  1. Chrome => 表现良好,最“响应”
  2. Firefox => 没有Chrome表现得好,内存消耗高,但是可以工作
  3. IE => 只要文件大小低于15 MB,就可以工作,否则浏览器无法处理文件-没有反馈,也没有触发任何事件

也许这是一个内存问题-使用内存较少的不同机器测试相同的文件时,IE在5 MB文件上就拒绝工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接