我整天都在尝试不同的方法,但是似乎没有任何一种方法可以简单,直接地将ReadableStream
(是图像)写入文件。我正在调用一个返回ReadableStream
的API,但是那又如何呢?我尝试进一步研究该对象,然后一直跟踪它返回一个Buffer[]
,这似乎应该是需要放入fs.writeFile()
的东西,但没有任何效果。该文件已创建,但是我尝试打开该图像,并说它无法打开该文件类型(他们正在谈论的文件类型,我不知道)。
这是我的代码,返回一个Buffer[]
。我还可以切断其中一些链,只返回ReadableStream
主体,但是随后返回PullThrough
,我已经迷失了。关于在线课程的信息很少。有什么建议吗?
// Image of a dog.
const dogURL = 'https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png';
await computerVisionClient.generateThumbnail(100, 100, dogURL, { smartCropping: true } )
.then((thumbResponse) => {
console.log(thumbResponse.readableStreamBody.readableBuffer.head.data)
fs.writeFile("thumb.jpg", thumbResponse.readableStreamBody.readableBuffer.head.data, "binary", (err) => {
console.log('Thumbnail saved')
if (err) throw err
})
})
答案 0 :(得分:1)
最后找到了解决方案。我不太了解pipe()
,但是当以文件路径作为参数从ReadableStream
调用它时,它将起作用。
API响应thumbResponse.readableStreamBody
是ReadableStream
。因此,拥有可读流的任何人都可以使用此解决方案。无需调用API。
// Image of a dog.
const dogURL = 'https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png';
await computerVisionClient.generateThumbnail(100, 100, dogURL, { smartCropping: true } )
.then((thumbResponse) => {
const destination = fs.createWriteStream("thumb.png")
thumbResponse.readableStreamBody.pipe(destination)
console.log('Thumbnail saved')
})