将文件下载到写入流,但在 node.js 中直接转到读取流
Download a file to a writestream but go directly to a readstream in node.js
我正在尝试使用 googleapis/youtube
库将文件上传到 YouTube。网上所有的例子都指向从本地文件系统上传文件,代码是这样的:
const data = await yt.videos.insert({
resource: {
// Video title and description
snippet: {
title: 'test',
description: 'test desc',
},
// I don't want to spam my subscribers
status: {
privacyStatus: 'public',
},
},
// This is for the callback function
part: 'snippet,status',
// Create the readable stream to upload the video
media: {
body: fs.createReadStream(
path.resolve(
'/Users/username/file.mp4',
),
),
},
});
上面的代码有效,但是,我想从 url 下载一个文件并立即将其通过管道传输到上面的调用中,替换 fs.createReadStream
并完全绕过本地文件系统,所以我不之后必须进行清理或在 lambda 中达到 space 限制(/tmp
最大为 500MB)。
我在其他地方读到你可以使用 stream.PassThrough
流,但我不确定是否有更好的方法来做到这一点。
长话短说:
我想从
URL -> writestream -> filesystem -> readstream -> youtube
至
URL -> writestream -> youtube
有了axios,你应该可以直接使用传入流:
const response = await axios({
method: 'get',
url: someURL,
responseType: 'stream'
});
然后,直接使用那个流:
media: {
body: response.data
},
我正在尝试使用 googleapis/youtube
库将文件上传到 YouTube。网上所有的例子都指向从本地文件系统上传文件,代码是这样的:
const data = await yt.videos.insert({
resource: {
// Video title and description
snippet: {
title: 'test',
description: 'test desc',
},
// I don't want to spam my subscribers
status: {
privacyStatus: 'public',
},
},
// This is for the callback function
part: 'snippet,status',
// Create the readable stream to upload the video
media: {
body: fs.createReadStream(
path.resolve(
'/Users/username/file.mp4',
),
),
},
});
上面的代码有效,但是,我想从 url 下载一个文件并立即将其通过管道传输到上面的调用中,替换 fs.createReadStream
并完全绕过本地文件系统,所以我不之后必须进行清理或在 lambda 中达到 space 限制(/tmp
最大为 500MB)。
我在其他地方读到你可以使用 stream.PassThrough
流,但我不确定是否有更好的方法来做到这一点。
长话短说: 我想从
URL -> writestream -> filesystem -> readstream -> youtube
至
URL -> writestream -> youtube
有了axios,你应该可以直接使用传入流:
const response = await axios({
method: 'get',
url: someURL,
responseType: 'stream'
});
然后,直接使用那个流:
media: {
body: response.data
},