Javascript “与”的区别是什么;createReadStream“;及;可读的;上课?
有人能解释node.js中Javascript “与”的区别是什么;createReadStream“;及;可读的;上课?,javascript,node.js,Javascript,Node.js,有人能解释node.js中createReadStream和readable之间的区别吗?根据我的观察,它们是相似的,那么引擎盖下的区别是什么,什么时候应该使用它们 比如说 const s3 = new AWS.S3({ accessKeyId: AWSConfig.AWSConfig.ACCESS_KEY_ID, secretAccessKey: AWSConfig.AWSConfig.SECRET_ACCESS_KEY, }); const para
createReadStream
和readable
之间的区别吗?根据我的观察,它们是相似的,那么引擎盖下的区别是什么,什么时候应该使用它们
比如说
const s3 = new AWS.S3({
accessKeyId: AWSConfig.AWSConfig.ACCESS_KEY_ID,
secretAccessKey: AWSConfig.AWSConfig.SECRET_ACCESS_KEY,
});
const params = {
Bucket: AWSConfig.AWSConfig.bucket,
Key: "somebucketName/1620072325205",
};
const file = await s3.getObject(params).promise();
const fileSize = file.ContentLength / (1024 * 1024);
const read = new Readable({
read(fileSize) {
this.push(file.Body);
this.push(null);
},
});
read.pipe(res);
这类似于
const s3 = new AWS.S3({
accessKeyId: AWSConfig.AWSConfig.ACCESS_KEY_ID,
secretAccessKey: AWSConfig.AWSConfig.SECRET_ACCESS_KEY,
});
const params = {
Bucket: AWSConfig.AWSConfig.bucket,
Key: "somebucketName/1620072325205",
};
const file = await s3.getObject(params).createReadStream();
file.pipe(res)
在NodeJS中,您可以通过以下几种方式创建可读流: 解决方案1 您可以使用
fs
模块来完成。函数fs.createReadStream()
允许您打开一个可读的流,您所要做的就是传递文件路径以开始流式处理
const fs = require('fs');
const readable_stream = fs.createReadStream('file_path');
解决方案2
如果不想创建文件,可以在内存中创建一个流并对其进行处理(例如,将其上载到某个地方)。您可以使用流
模块执行此操作。您可以从流
模块导入可读的
,并创建可读的流。创建对象时,还可以实现read()
方法,该方法用于从内部缓冲区读取数据。如果没有可读取的数据,则返回null
。可选的size
参数指定要读取的特定字节数。如果未指定size
参数,则将返回内部缓冲区中包含的所有数据
const Readable = require('stream').Readable;
const readable_stream = new Readable({
read(size) {
// ...
}
});
解决方案3
当您通过网络获取某些内容时,可以像流一样获取这些内容(例如,您从某个API获取PDF文档)
解决方案4
第三方软件包可以支持创建流作为一项功能。这是使用示例中的aws sdk包的一种方法
总结和结论
您可以通过几种方式创建可读的
流。由于您已经在使用aws sdk
包,我想说您应该继续使用他们的createReadStream()
,而不是导入stream
模块并使用它创建可读的流。fs.createReadStream()
创建从文件获取数据的可读流。可读性是一种通用的东西。它可以连接到许多不同类型的数据源。因此,fs.createReadStream()
创建一个连接到文件的文件。感谢您的关注完美解释欢迎。如果它对你有帮助,也可以考虑接受我的回答。
const axios = require('axios');
const readable_stream = await axios({
method: 'get',
url: "pdf_resource_url",
responseType: 'stream'
}).data;