gpt4 book ai didi

Javascript FileReader 不会在大文件上触发事件

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:37 25 4
gpt4 key购买 nike

我正在尝试从客户端的计算机上播放视频文件。问题是很难获得绝对路径,所以我可以将它放在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)
{

};
};
}

最佳答案

没有这样的浏览器配置设置。我还使用过 FileReader 和大文件(最大 50 MB),浏览器的行为非常不同:

  1. Chrome => 表现不错,是最“敏感”的
  2. Firefox => 不如 Chrome,内存消耗高,但可以用
  3. IE => 只要文件小于 15 MB 就可以工作,以上浏览器只是不处理文件 - 没有反馈,没有触发任何事件

可能是内存问题 - 在内存较少的不同机器上测试了相同的文件,IE 拒绝在 5 MB 的文件上工作。

关于Javascript FileReader 不会在大文件上触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com