我正在从我的 Meteor 服务器发送请求以通过 API 下载文件。然后我想将该文件上传到 S3。我不断收到以下“NoSuchKey:指定的密钥不存在”。我最初认为这可能是我的 AcessKey/SecretKey 表单 AWS 的问题,但在谷歌搜索了一段时间后,我能找到的其他人收到此错误的唯一示例是尝试从 S3 下载文件时。
设置cfs:s3
var imageStore = new FS.Store.S3("images", {
accessKeyId: "MyAcessKeyId", //required if environment variables are not set
secretAccessKey: "MySecretAcessKey", //required if environment variables are not set
bucket: "BucketName", //required
});
Images = new FS.Collection("images", {
stores: [imageStore]
});
从 API 开始文件传输并上传到 S3
client.get_result(id, Meteor.bindEnvironment(function(err, result){ //result is the download stream and id specifies which file to download.
if (err !== null){
return;
}
var file = new FS.File(result);
Images.insert(file, function (err, fileObj) {
if (err){
console.log(err);
}
});
}));
注意:我收到以下错误,所以我添加了 Meteor.bindEnvironment。 “Meteor 代码必须始终在 Fiber 中运行。尝试使用 Meteor.bindEnvironment 包装传递给非 Meteor 库的回调。”
API 文档中的 Node.js 示例
client.get_result(id, function(err, result){
if (err != null) {
return;
}
file.writeFile(path.join('public', path.join('results', filename)), result, 'binary');
});