将文件下载到写入流,但在 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
  },