Я застрял в ситуации надолго.Я пытаюсь загрузить файл docx в корзину S3, используя Serverless Framework
. Я успешно загрузил документ docx в корзину S3. Но что случилось, когда я открыл документ из S3.Документ содержал данные буфера, преобразованные в строку base64.т.е. большая строка около 23 страниц.
Документ был поврежден.
МОЙ код
exports.putFile = async(event) =>{
try {
var bitmap = fs.readFileSync('./test.docx');
let bufferValue = new Buffer(bitmap).toString('base64');
const valueFromBucket = await S3.putObject(
{ Body: bufferValue,
Bucket: '********',
Key: '*****.docx',
ContentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
ContentDisposition: 'attachment',
ContentEncoding: 'base64'
}).promise();
return{
statusCode: 200,
body: JSON.stringify(valueFromBucket)
}
}catch(err){
return {
statusCode: err.statusCode || 400,
body: err.message || JSON.stringify(err.message)
}
}
}
Serverless.yml
service: node11
custom:
bucket: ******
provider:
name: aws
runtime: provided # set to provided
stage: dev
region: *****
iamRoleStatements:
- Effect: Allow
Action:
- s3:*
- ses:SendEmail
- ses:SendRawEmail
Resource: "*"
functions:
hello:
handler: handler.*****
memorySize: 1024
events:
- http:
path: /
method: get
layers: # add layer
- arn:aws:lambda:us-east-1:553035198032:layer:nodejs11:3
putFile:
handler: handler.*****
description: put Object using S3 service.
memorySize: 1024
timeout: 5
events:
- http:
path: putfile
method: post
integration: lambda
cors: true
layers: # add layer
- arn:aws:lambda:us-east-1:553035198032:layer:nodejs11:3
Я думаюкод почти работает, но эта проблема строки base 64, которая содержится в загруженном документе, является проблемой.
Любая помощь приветствуется, спасибо заранее