【发布时间】: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