Я пытаюсь сделать фотографию, загруженную в Slack, и положить ее на S3. У меня есть загрузка Slack, запускающая функцию Lambda, затем я получаю file.info, а затем GET файла из «private_url». Проблема заключается в том, что «тело» ответа больше исходного файла и размер файла, указанный в вызове file.info для Slack. В результате файл не открывается. Это только кажется проблемой с медиа-файлами. Текстовые файлы работают просто отлично.
Снимок экрана с разницей в размерах файлов
Я также только что попытался записать в свою локальную систему и получить такой же раздутый файл.
function getFileInfo(){
return new Promise((resolve, reject) => {
var params = {
token: process.env.BOT_TOKEN,
file: lifeObject.eventBody.event.file.id
}
Slack.files.info(params)
.then((result) => {
lifeObject.fileInfo = result
resolve(lifeObject)
})
})
}
function uploadToS3(){
return new Promise((resolve, reject) => {
request.get({
url: lifeObject.fileInfo.file.url_private,
headers: {
"Authorization": "Bearer " + process.env.BOT_TOKEN
}
}, function(error, response, body) {
var params = {
Body: body,
Bucket: s3Bucket,
Key: "tempFileName.jpg"
};
s3.putObject(params, function(err, data) {
if (err){
console.log(err, err.stack)
reject(err)
} else {
resolve(data)
}
});
})
})
}