Когда я использую функцию s3.getObject, при преобразовании возвращается тело в байтах, слишком длинный zip-файл, слишком длинный, чтобы использовать функцию .toString (). Мне было интересно, есть ли лучший способ преобразовать байты zip-файла в строку, чтобы я мог использовать эту строку для извлечения содержимого zip-файла в локальный каталог? Кроме того, мне нужно преобразовать ZIP-файл в байты в строку, чтобы я мог ссылаться на него для пути к файлу, чтобы распаковать файл?
// Make Directories for Zipped and Unzipped files
try {
const zipDirFolder = await mkdirp(localZippedFolder, { recursive: true })
const unZipDirFolder = await mkdirp(localUnzippedFolder, { recursive: true });
const folderChecker = fs.statSync(unZipDirFolder);
console.log('Is unZipDirFolder a directory? ' + folderChecker.isDirectory());
console.log('SUCCESS: unzipped directory created!');
console.log('SUCCESS: zipped directory create!')
// Download files from s3 Bucket
await s3.getObject(params).promise()
.then(data => {
const fileData = data.Body;
console.log(data);
console.log('SUCCESS: starting to read data');
console.log(fileData);
});
await new Promise((resolve, reject) => {
// Extract files from zipped folder and store them in a local directory
fs.createReadStream('/tmp/ZippedStudentData/Jerry-user-data.zip')
.pipe(unzipper.Extract({path: unZipDirFolder}))
.on('finish', resolve)
.on('error', reject);
});
}
catch (error) {
console.log(error);
}