无法使用FileReader从fs读取文件

时间:2020-06-02 20:58:52

标签: node.js 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�\.............

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据npm filereader Doc,使用fs.readFileSync(p12_path, "utf-8");创建的阅读器需要获取utf-8编码的文件的路径,否则它将无法读取。

打印出的"0�6�\.............显示文件显然不在utf8中,因此不可读。