Skip to content

Small example showing how to return binary files from the Serverless framework (in this case, Excel files)

License

Notifications You must be signed in to change notification settings

thomastoye/serverless-binary-files-xlsx

Repository files navigation

aws-nodejs-typescript-xlsx

Small example demonstrating how to return binary files using the Serverless framework, in this case Excel files.

When testing, you may need to sls remove and sls deploy again - seems like the changes don't always reach AWS.

Steps

Want to return binary files in an existing project? Here's how:

  • Install serverless-apigw-binary
$ npm install --save-dev serverless-apigw-binary
  • Add serverless-apigw-binary plugin in serverless.yml
 plugins:
   - serverless-webpack
+  - serverless-apigw-binary
  • Add plugin configuration in serverless.yml
plugins:
  - serverless-webpack
  - ...
  - serverless-apigw-binary

+custom:
+  apigwBinary:
+    types:
+      - '*/*'
  • Convert your binary file to base64
const binary: Buffer = ...;
const output = binary.toString('base64');

Or if you're also working with the xlsx library, you can write directly to base64:

const output = XLSX.write(wb, { type: 'base64', bookType: 'xlsx' });
  • Set isBase64Encoded: true and set the Content-Type and Content-Disposition headers on the response
export const xlsx: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {
  const response = {
    statusCode: 200,
    body: output,
    headers: {
      'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
      'Content-Disposition': 'attachment; filename="hello.xlsx"',
    },
    isBase64Encoded: true,
  };

  cb(null, response);
}

About

Small example showing how to return binary files from the Serverless framework (in this case, Excel files)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published