javascript - 尽管 Node js 中的一切都是正确的,但无法从 aws s3 下载图像
问题描述
我aws-sdk
用于从 aws s3 代码下载图像没有错误但没有任何图像下载
const filePath = '../imgs';
const bucketName = 'xxx';
const key = "uploads/imgs/logo.png";
const AWS = require('aws-sdk');
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "xxxxxx";
AWS.config.secretAccessKey = "xxxxxxxx";
AWS.config.region = "us-east-1";
const fs = require('fs')
var s3 = new AWS.S3();
const s3download = (bucketName, keyName, localDest) => {
if (typeof localDest == 'undefined') {
localDest = keyName;
}
let params = {
Bucket: bucketName,
Key: keyName
}
let file = fs.createWriteStream(localDest)
return new Promise((resolve, reject) => {
s3.getObject(params).createReadStream()
.on('end', () => {
return resolve();
})
.on('error', (error) => {
return reject(error);
}).pipe(file)
});
};
s3download(bucketName, key, filePath)
当打印结果出现时
_readableState: ReadableState {
objectMode: false,
highWaterMark: 16384,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: [],
flowing: null,
ended: false,
endEmitted: false,
reading: false,
sync: false,
needReadable: false,
emittedReadable: false,
readableListening: false,
resumeScheduled: false,
errorEmitted: false,
emitClose: true,
autoDestroy: true,
destroyed: false,
errored: false,
closed: false,
closeEmitted: false,
defaultEncoding: 'utf8',
awaitDrainWriters: null,
multiAwaitDrain: false,
readingMore: false,
decoder: null,
encoding: null,
[Symbol(kPaused)]: null
},
_events: [Object: null prototype] { prefinish: [Function: prefinish] },
_eventsCount: 1,
_maxListeners: undefined,
_writableState: WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: false,
needDrain: false,
ending: false,
ended: false,
finished: false,
destroyed: false,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: true,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
afterWriteTickInfo: null,
buffered: [],
bufferedIndex: 0,
allBuffers: true,
allNoop: true,
pendingcb: 0,
prefinished: false,
errorEmitted: false,
emitClose: true,
autoDestroy: true,
errored: false,
closed: false,
closeEmitted: false
},
allowHalfOpen: true,
[Symbol(kCapture)]: false,
[Symbol(kCallback)]: null
}
解决方案
filePath
提供了我们要保存从 S3 获得的文件的文件夹的路径,但我们没有在此处提供文件名:
let file = fs.createWriteStream(localDest)
localDest
应该是完整路径+文件名,目前它只提供完整路径
推荐阅读
- reactjs - SetState 不重新渲染和画廊混合
- python - Pandas:如何按组对变量求和?
- c - 打印在某个文件位置从二进制文件读取的字节 C
- events - 从场景事件过滤器访问 JavaFX 当前控制器
- polymer - 将项目添加到子数组时,聚合物嵌套的 dom-repeat 模板不会更新
- javascript - 使用 jQuery Validation 插件验证依赖选择选项
- php - php - if/else if 函数基于具有特定类名的 div 的 id 名称?
- excel - Excel VBA 程序在第二次运行语句 CreateObject 访问 DLL 时失败
- android - 我如何在 android studio 上使用 3rd 方程序/插件?
- javascript - Node.js:在导出的快速路由中引用和修改主 js 文件中的变量