node.js - 从 AWS Lambda 提供 zip 文件

标签 node.js amazon-web-services 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')

但是当我尝试在 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
    }
}

为什么我得到一个损坏的 zip 文件?

更新

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

最佳答案

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

关于node.js - 从 AWS Lambda 提供 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54518823/

相关文章:

json - 使用 RESTful http API 实现一个 http 服务器

javascript - NodeJS - 将 SQL 结果发送到 Google Sheets

node.js - shopify-express 续集自定义策略

python - 如何在亚马逊 Sagemaker 上部署 xgboost 模型?

android - 使用 ImageLoader 从 AWS url android 下载图像

amazon-web-services - 如何使用一个 CloudFormation 堆栈中的 SQS 队列作为另一个 CloudFormation 堆栈中的 lambda 函数的触发器?

node.js - 如何使用 pm2 观看和重新加载 ExpressJS 应用程序

php - 突然无法连接到 Amazon S3

yaml - 无法在 AWS::ApiGateway::Model 资源的输出部分中引用 API

aws-lambda - 如何使用 AWS Lambda 的无服务器框架获取最新的 Layer 版本