Search code examples
node.jsamazon-web-servicesexpresspdfserverless-framework

serverless express can't retrieve pdf file (base64 encoding)


I have setup an express/serverless application to retrieve a pdf file on a GET request. But I just retrieve a corrupted repsonse pdf response. I just wondering If my settings are correct to achieve a correct response.

I'm using aws-serverless-express and want to return my pdf buffer to the client browser (it should open in the browser)

My code:

  status = 200;
  let fileName = "demo.pdf"; 
  res.setHeader('Content-disposition', 'inline; filename="' + fileName + '"');
  res.setHeader('Content-type', 'application/pdf');
  res.setHeader('isBase64Encoded', true);//isBase64Encoded: true

  let pdf = pdfBuffer.toString('base64');
  res.status(status).send(pdf);

so I'm sending a base64 encoded string to APIGW. I'm not actually sure if I can set the isBase64Encoded flag via header. I read this before but I'm not so certain about that

I have done this whole procedure before, but didn't make use of aws-serverless-express (where I Could set the isBase64Encoded flag easily)

I'm also using serverless-apigw-binary to automatically setup APIGW for the correct decoding of the base64 encoded data


Solution

  • lambda is automatically encoding to base64, so I had to remove it and directly send the buffer.