最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

为来自AWS LAMBDA zip文件

IT培训 admin 1浏览 0评论

为来自AWS LAMBDA zip文件

我需要提供一系列的zip文件的压缩文件的端点(无服务器)。要做到这一点,我使用node-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')

但是,当我尝试实施它在一个拉姆达下载的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文件?

Update

我所做的到底要解决这个问题:

  • 的请求的主体更改为一个base64字符串(jszip:generateAsync({type: 'base64'})
  • 使API网关服务二进制内容:
回答如下:

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

为来自AWS LAMBDA zip文件

我需要提供一系列的zip文件的压缩文件的端点(无服务器)。要做到这一点,我使用node-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')

但是,当我尝试实施它在一个拉姆达下载的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文件?

Update

我所做的到底要解决这个问题:

  • 的请求的主体更改为一个base64字符串(jszip:generateAsync({type: 'base64'})
  • 使API网关服务二进制内容:
回答如下:

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论