DOCX文献无服务器S3错误而Putobject方法(Docx Document Serverles

2019-10-30 00:01发布

我被困在很长一段时间的情况。 我想上传一个DOCX文件S3存储,使用无服务器架构

我成功地上传DOCX文档S3 bucket.But发生的事情是,当我从S3打开的文档。 该文件包含转换成BASE64串缓冲器中的数据。 即大串约23页。

该DOCX已损坏。

我的代码

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

我认为代码几乎是工作,但它包含了上传文件在底座64串的这个问题是问题。

任何形式的帮助感激,谢谢提前

Answer 1:

它不应该是必要的上传之前到二进制缓冲区转换为字符串。 掉落.toString('base64')其他的一切应该工作。



文章来源: Docx Document Serverless S3 Error while Putobject Method