Return excel 来自 AWS Lambda 函数的文件
Return excel file from AWS Lambda function
我正在尝试通过 Lambda return 一个 excel 文件。成功了,但是内容只是文件的base64编码字符串
代码如下:
const xl = require("excel4node")
module.exports.handler = async () => {
var wb = new xl.Workbook()
var ws = wb.addWorksheet('Sheet 1')
const cols = [ "col1", "col2" ]
cols.forEach((c,i) => { ws.cell(1, i+1).string(c) })
const buffer = await wb.writeToBuffer()
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': "*",
'Access-Control-Allow-Methods': "*",
'Content-type' : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
'Content-Disposition': `attachment; filename="test.xlsx"`,
},
isBase64Encoded: true,
body: buffer.toString('base64')
}
}
和this is what's generated
我正在使用无服务器框架,我已将 contentHandling 配置设置为 CONVERT_TO_BINARY。
非常感谢,
解决了!重读上面@jarmod 的回答后,发现我没有将 API 二进制媒体类型设置为 '*/*'
在无服务器配置文件中添加了 apiGateWay.binaryMediaTypes 并且有效
我正在尝试通过 Lambda return 一个 excel 文件。成功了,但是内容只是文件的base64编码字符串
代码如下:
const xl = require("excel4node")
module.exports.handler = async () => {
var wb = new xl.Workbook()
var ws = wb.addWorksheet('Sheet 1')
const cols = [ "col1", "col2" ]
cols.forEach((c,i) => { ws.cell(1, i+1).string(c) })
const buffer = await wb.writeToBuffer()
return {
statusCode: 200,
headers: {
'Access-Control-Allow-Origin': "*",
'Access-Control-Allow-Methods': "*",
'Content-type' : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
'Content-Disposition': `attachment; filename="test.xlsx"`,
},
isBase64Encoded: true,
body: buffer.toString('base64')
}
}
和this is what's generated
我正在使用无服务器框架,我已将 contentHandling 配置设置为 CONVERT_TO_BINARY。
非常感谢,
解决了!重读上面@jarmod 的回答后,发现我没有将 API 二进制媒体类型设置为 '*/*'
在无服务器配置文件中添加了 apiGateWay.binaryMediaTypes 并且有效