node.js - 使用 Koa 将远程图像流式传输到缓冲区
问题描述
第一次玩nodejs流。我觉得我在这里错过了一些关于流如何工作的基本知识。当我向 URL 发出请求时,它会注销 404。如果我尝试写入缓冲区,则会引发错误。
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL. Received type object
1 const Koa = require('koa')
2 const app = new Koa()
3 const fs = require('fs')
4
5 const url = 'http://4.bp.blogspot.com/-cDeYCsNL-ZQ/UozsUJ7EqfI/AAAAAAAAGSk/EtuzOVpHoS0/s400/andy.png'
6 app.use(ctx => {
7 const buffer = new Buffer.alloc(1000)
8 ctx.request.get(url).pipe(fs.createWriteStream(buffer))
9 console.log(ctx.request)
10 console.log(ctx.response)
11 })
12
13 app.listen(1337)
解决方案
错误是由这部分引起的:fs.createWriteStream(buffer)
. 该方法需要一个包含文件系统路径的字符串,例如fs.createWriteStream("image.png")
.
一般来说,您的用例不需要显式创建任何缓冲区。甚至 Koa 也是多余的。如果您想在后台使用缓冲区将 URL 的内容流式传输到硬盘。你可以写:
const request = require("request")
const fs = require("fs")
const url = 'http://4.bp.blogspot.com/-cDeYCsNL-ZQ/UozsUJ7EqfI/AAAAAAAAGSk/EtuzOVpHoS0/s400/andy.png'
request(url).pipe(fs.createWriteStream('image.png'))
推荐阅读
- php - 从数据库传递的动态变量
- javascript - TypeError:无法读取未定义的属性“settDate”
- wix - 将自定义对话框插入内置对话框集中的 Wix 问题
- python - 在搜索函数的最小值时,如何为有限差分梯度设置变量的最小变化?
- javascript - 如何根据选择使新字段出现在表单中
- python - 如何在 python 中创建日期间隔列表?
- amazon-web-services - 如何在访问之前检查 aws sqs 队列是否可用?
- pandas - 当“A”列是数字列表而“B”列是目标变量时,python代码 df['A'][df['B']] 如何工作?
- python - Python 多处理 SyncManager/AutoProxy 似乎无法正确更新共享对象
- opencv - LibTorch C++ 和 Eigen 之间的数据传输