javascript - 如何使用 JavaScript 加载大文件的一部分?

标签 javascript

我有一个包含文本数据的 1GB 文件。我需要使用浏览器 JavaScript 将 N 字节开始的 100 字节加载到内存中。 我该怎么做?

最佳答案

使用文件 API:

function fileReaderApiSupported() {
  return (window.File && window.FileReader && window.FileList && window.Blob);
}
    
function readNBytesOfFile(size, inputId) {
  if (!fileReaderApiSupported()) {
    alert('FileReader API unsupported');
    return;
  }
    
  var readFrom = document.getElementById(inputId);
  if (!readFrom || !readFrom.files || !readFrom.files.item(0)) {
    alert('No file');
    return;
  }
  
  var countOfBytesToRead = parseInt(size);
  var readFromFile = readFrom.files.item(0);
  
  var fileReader = new FileReader();
  var chunk = readFromFile.slice(0, countOfBytesToRead);
  
  fileReader.onload = function() {
    var result = fileReader.result;
    document.getElementById('result').innerText = result;
  };
  fileReader.readAsText(chunk);
}
<input id="my-file-input" type="file">
<button onclick="readNBytesOfFile(100, 'my-file-input')">READ</button>

<hr/>

<div id="result"></div>

还可以使用LineReader按 block 读取,并在100字节后停止读取。

关于javascript - 如何使用 JavaScript 加载大文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216897/

相关文章:

javascript - ScrollMagic 响应持续时间/粘性导航的端点?

javascript - Chrome 中的平滑滚动功能卡住了

javascript - 如何在jsTree中给子节点一个带有JSON的 'id'

javascript - Angular 表达式的解析方式与控制台不同

javascript - 不使用 <any> 的 typescript 和解决 promise

javascript - HighChart 在点击图例时隐藏其他系列

javascript - 如何使用 Google map 3 隐藏然后显示 map Canvas ?

javascript - 从 javascript 调用 ItemEditForm 上的保存操作

javascript - 在 React 中调用 setState 后,是否有硬性规则来避免访问/更改状态时出现异步错误?

javascript - 如何在 TextNode 之后使用 jQuery.insertAfter?