我正在尝试使用 ForEach 循环将文件从服务器端上传到 S3 存储桶,并且在每次成功上传后,还需要执行其他操作。但我似乎无法将异步函数 writeFile 包装在承诺或任何其他允许我等待上传完成的方法中。
Bellow 是我的代码,没有添加将 writeFile 包装在某种承诺中的代码。 请告知我做错了什么以及如何实现我正在尝试的目标。
const imageReplacer =( body, title) => {
const bucketName = process.env['BUCKET_NAME']
let newEntry = body;
const trimedTitle = title.replace(/\s/g, '');
const s3fsImpl = new S3FS(bucketName, {
accessKeyId: process.env["AWS_ACCESS_KEY_ID"],
secretAccessKey: process.env["AWS_SECRET_KEY"],
region: process.env['AWS_REGION'],
});
const files = fs.readdirSync(tempFolder)
console.log("file", files)
files.forEach( file =>{
let filePath = tempFolder+"\\"+file;
console.log(filePath)
try{
let stream = fs.createReadStream(filePath);
const fileName = bucketName+"/"+trimedTitle+ "/"+file
const options = {
ACL:'public-read'
}
s3fsImpl.writeFile(fileName, stream, options)
.then(function (res) {
let newUrl = bucketUrl+trimedTitle+"/"+file;
let oldPath =localHostPath+file
newEntry = newEntry.replace(oldPath,newUrl);
console.log("write file")
});
}
catch (error){
console.log('error: ${error} while reading file ${file}')
}
})
}
谢谢