首页 > 解决方案 > 无法使用 FileReader 从 fs 读取文件

问题描述

嗨,我正在尝试读取文件,但 nodejs 中的 fileReader readAsArrayBuffer 函数出现问题。

var FileReader = require("filereader");

let p12_path = __dirname + "/file.p12";

var p12xxx = fs.readFileSync(p12_path, "utf-8");

var reader = new FileReader();

reader.readAsArrayBuffer(p12xxx);//The problem is here
reader.onloadend = function() {
  arrayBuffer = reader.result;
  var arrayUint8 = new Uint8Array(arrayBuffer);
  var p12B64 = forge.util.binary.base64.encode(arrayUint8);
  var p12Der = forge.util.decode64(p12B64);
  var p12Asn1 = forge.asn1.fromDer(p12Der);

  ............
}

- - - -错误

Error: cannot read as File: "0�6�\.............

标签: node.jsfs

解决方案


您正在阅读的 PDF 文件不是基于文本的格式,并且不应指定编码。根据 fs 文档“如果指定了编码选项,则此函数返回一个字符串”,但因为它主要是一个二进制文件,它读取无效的 UTF8 字符。当您排除编码时,它应该给您一个 Buffer 对象,而不是您最可能想要的。


推荐阅读