嗨,我正在尝试读取文件,而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�\.............
答案 0 :(得分:0)
您正在阅读的PDF文件不是基于文本的格式,并且不应指定编码。根据fs docs“如果指定了编码选项,则此函数将返回字符串”,但由于其主要是二进制文件,因此其读取的UTF8字符无效。当您排除编码时,它应该给您一个Buffer对象,而这正是您最想要的。
答案 1 :(得分:0)
根据npm filereader Doc,使用fs.readFileSync(p12_path, "utf-8");
创建的阅读器需要获取utf-8
编码的文件的路径,否则它将无法读取。
打印出的"0�6�\.............
显示文件显然不在utf8中,因此不可读。