确定节点js中读取流的长度

Posted

技术标签:

【中文标题】确定节点js中读取流的长度【英文标题】:Determining the length of a read stream in node js 【发布时间】:2015-07-25 11:31:43 【问题描述】:

我想知道是否有一种简单的方法可以确定节点 js 中 readStream 的长度。我正在写一个工人来将 PDF 上传到 S3,它正在呕吐错误:“无法确定 [object PDFDocument] 的长度”。 pdf 是可读流(我可以将其通过管道传输到当前内存中的文件并查看生成的 pdf)。

我正在考虑做的一些事情: 1. 将整个 pdf 通过管道传输到内存(例如缓冲区),然后在该缓冲区上调用 fstat 以确定大小。

    创建一些方法,在我通过管道传输 pdf 时动态找到大小。

或者有更简单的方法吗?接受所有建议,提前致谢!

这是对 S3 的调用。可读的 pdf 流称为 doc:

return Q.ninvoke(s3, 'putObject', Bucket: 'REDACTED', Key: obfuscatedFN, Body: doc, ContentType: 'application/pdf')
     .then(function() 
           console.log("Successfully uploaded data to myBucket/myKey");
           return Q(true);
     )
     .fail(function(err) 
           console.log(err);
     )

【问题讨论】:

【参考方案1】:

S3 有另一种称为“上传”的方法,您可以在不需要知道长度的地方使用它。

【讨论】:

以上是关于确定节点js中读取流的长度的主要内容,如果未能解决你的问题,请参考以下文章

在 vue.js 中查找数组长度时无法读取未定义的属性“长度”

合并流以及已知文件流长度和未知文件长度的文件流读取方法

在 Node.js 中添加转义时无法读取属性长度

无法在下一个 js 上读取 firebase 中未定义的属性“长度”

js中怎么截取不确定长度的字符串,截取后保留后面的部分

渲染中的 Vue.js 错误:“TypeError:无法读取未定义的属性‘长度’”