Node.js 中的 fileReader.readAsArrayBuffer() 等效方法?

var*_*nme 5 filereader node.js express pdf.js multer

我有一个File对象,我想将其传递给PDF.jsgetDocument方法。在前端我会使用getDocument这样的方法:

pdfjs.getDocument(fileReader.readAsArrayBuffer(myFileHere))
Run Code Online (Sandbox Code Playgroud)

如何使用Node.js实现上述内容?我还使用Express.jsMulter

amn*_*amn 3

我不知道 PDF.js 是否能够在 Node 上运行,但我们假设它可以。

至少使用Node 中可用的readFile(或者readFileSync如果您希望“立即”获取内容)过程,可以将文件读入Buffer对象(给定文件路径)。

如果您查看Buffer上面链接的文档,您还会发现指定这些是以下实例UInt8Array

Buffer 类是 JavaScript 的 Uint8Array 类的子类,并使用涵盖其他用例的方法对其进行了扩展。

更进一步,该类的一个对象UInt8Array,也是该类的一个对象TypedArray(按照指定前者的相同规范),有一个名为 的属性buffer,它允许您访问底层缓冲区1 ,它是......一个ArrayBuffer

因此,您应该能够使用以下内容的变体,将ArrayBuffer某些文件的内容传递给 PDF.js:

pdfjs.getDocument(require("fs").readFileSync("/path/to/file").buffer);
Run Code Online (Sandbox Code Playgroud)

我必须假设您必须按路径读取文件 - 我假设您fileReader是 a FileReader,它(与其误导性名称相反)读取Blob对象(而不是文件) -并且 Node 没有Blob定义任何类!因此,如果您不想通过某个路径读取文件,那么您必须告诉我们如何使用 Node 加载文件内容。

1不要因为这里到处都是“缓冲区”这个词而责怪我,显然,它一直是缓冲区——我没有设计任何这些类;)