从 AWS Lambda 提供 zip 文件

Pur*_*fan 7 amazon-web-services node.js aws-serverless

我需要一个端点(无服务器)来为压缩在 zip 文件中的一系列文件提供服务。为此,我使用node-zip。这可以在本地创建一个带有平面文件文本的简单 zip 文件:

const fs = require('fs')
const zip = new require('node-zip')()

const flat_text = 'This is a flat text file'

zip.file('a_file.txt', flat_text)
fs.writeFileSync('/tmp/a_file.zip', zip.generate({base64: false, compression: 'DEFLATE'}), 'binary')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在 lambda 中实现它时,下载的 zip 文件已损坏:

module.exports.weekly = async (event, context) => {
    const flat_text = 'This is a flat text file'
    zip.file('a_file.txt', flat_text)
    return {
        headers: {
            'Content-Type': 'application/zip, application/octet-stream',
            'Content-disposition': `attachment; filename=${`any_name_${new Date().toJSON().slice(0, 10)}.zip`}`
        },
        body:  zip.generate({base64: false, compression: 'DEFLATE'}),
        statusCode: 200
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到损坏的 zip 文件?

更新

我最终做了什么来解决这个问题:

A.K*_*han 4

isBase64Encoded: true您可以尝试通过添加响应对象将响应编码为 Base64 编码字符串。