【问题标题】:createReadStream without path没有路径的 createReadStream
【发布时间】:2022-04-06 02:18:51
【问题描述】:

我是编程和网络开发的新手,即使我的母语不是英语,所以我的解释可能难以理解。

我正在使用 aws sdk、aws s3、apollo 服务器、apollo 客户端、react 和 node 当文件从客户端发送到 apollo 服务器时,服务器会解构文件以创建可读流,以便我可以将文件上传到 s3。 在节点文件系统模块文档中,fs.createReadStream 方法需要路径,但是我的代码在没有路径的情况下工作

我只是做了 createReadStream() 没有任何参数。它工作正常,所以我可以将文件上传到 s3

let { createReadStream, filename, mimetype, encoding } = await file;
let stream = createReadStream();

// don't mind Bucket field
s3.upload({
  Bucket: 'myBucket',
  Key: 'images/' + filename,
  Body: stream,
  ContentType: mimetype
});

为什么这在没有路径参数的情况下有效? 我错过了什么吗?

【问题讨论】:

  • 你正在从file解构createReadStream,所以很可能该方法被fs模块提供的标准方法覆盖,并且文件路径可能已经绑定到被覆盖的方法。不过,这只是一个有根据的猜测,需要知道file 在您的代码中来自哪里才能确定;)
  • @Jaxx 文件来自 html 输入(类型文件)。在我发布这个问题后,我也研究了一些。我发现阿波罗上传开发人员认为该方法不需要任何参数

标签: node.js apollo-server


【解决方案1】:

试试这个。

let { createReadStream, filename, mimetype, encoding } = await file;
let stream = createReadStream();

// don't mind Bucket field
s3.upload({
  Bucket: 'myBucket',
  Key: 'images/' + filename,
  Body: createReadStream(),
  ContentType: mimetype
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多