无法用FileReader从fs读取文件。

问题描述 投票:-1回答:1

你好,我想读取一个文件,我在使用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.js fs
1个回答
0
投票

你读取的是一个PDF文件,它不是基于文本的格式,不应该指定编码。根据fs文档,"如果指定了编码选项,那么这个函数就会返回一个字符串",但是因为它主要是一个二进制文件,所以它读取的是无效的UTF8字符。当你排除编码时,它应该给你一个Buffer对象,这是你最想要的。


0
投票

根据 npm filereader Doc读者用 fs.readFileSync(p12_path, "utf-8"); 需要获取文件的路径,在 utf-8 编码,否则无法读取。

打印出来的 "0�6�\............. 显示该文件显然不是utf8格式,因此无法读取。

© www.soinside.com 2019 - 2024. All rights reserved.