从相对路径读取文件并转换为ArrayBuffer格式

5
我正在尝试使用FileReader API将本地文件读入ArrayBuffer,就像这样:

let reader = new FileReader();

reader.onload = function(e) {
    let arrayBuffer = new Uint8Array(reader.result);
    console.log(arrayBuffer);
}

reader.readAsArrayBuffer(new File([], 'data.txt'));

但是我得到了一个空的arrayBuffer

我该如何在浏览器中将本地文件读取为ArrayBuffer?

谢谢。


重要提示:FileReader 仅用于以安全的方式从用户(远程)系统读取文件内容。它不能用于仅通过文件系统路径名读取文件。要在 JavaScript 中按路径名读取文件,应使用标准 Ajax 解决方案进行服务器端文件读取,并获得跨域资源共享(CORS)权限。 - BlueWater86
1个回答

6
无法通过文件路径名在浏览器中读取文件。您需要让用户与文件系统进行交互并选择文件,然后才能读取内容。

const readFile = e => {
  const file = e.target.files[0]
  let reader = new FileReader();

  reader.onload = function(e) {
      let arrayBuffer = new Uint8Array(reader.result);
      console.log(arrayBuffer);
  }

  reader.readAsArrayBuffer(file);
}

document.querySelector("#fileItem").onchange=readFile
<input id="fileItem" type="file">


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