javascript - 获取大文件加载进度结果
问题描述
获得小于 2GB 的文件没有问题,但是当我选择大于 2GB 的跨度时,什么也不输出。
<input type="file" name="vf" id="vf">
<span id="fileprecent"></span>
<script>
function byid(e){ return document.getElementById(e); }
function mc(e){ return Math.ceil(e); }
var vf=byid("vf");
var fpercent = byid("fileprecent");
vf.addEventListener( "change", () => {
var fr = new FileReader();
var chunk = [];
fr.addEventListener( "loadend",frLoadEnd );
fr.addEventListener( "progress",frProgress );
function frLoadEnd( e ){
var dataURL = e.target.result;
var dataLength = e.target.result.length;
var chunkSize = ( dataLength/100 );
for( var i = 0; i < 100; i++ ){
var lastChunk = ( chunkSize*( i+1 ) );
var firstChunk = ( lastChunk-chunkSize );
chunk.push( dataURL.slice( firstChunk,lastChunk ) );
}
}
function frProgress( e ){
var percent = Math.round( ( e.loaded/e.total )*100 );
fpercent.textContent = ( percent + " % Loaded" );
}
fr.readAsDataURL( vf.files[0] );
} );
</script>
错误
选择大于 2GB 的文件时出现 javascript 错误
(索引):22 未捕获的类型错误:无法在 FileReader.frLoadEnd 读取 null 的属性“长度”
解决方案
推荐阅读
- dictionary - golang 有支持 set 数据结构的计划吗?
- file - 在 Import-Csv 上选择文件
- docker - docker-compose sh 命令的“没有这样的文件或目录”
- javascript - 如何通过网站获取 chrome 登录用户的电子邮件 ID
- node.js - Node.js Sequelize 获取原生池
- android - 小部件类型旁边的这个字母数字是什么?
- android - ShapeDrawable 不适用于低于 21 的 api
- amazon-web-services - 跨 AWS 账户在 2 个 SQS 队列中复制消息的最佳方式
- javascript - 当设置为结果(array.filter 的结果)数组时,innerHTML 如何实际工作?
- gdb - gdb 如何在没有能力的情况下运行?