【发布时间】:2021-02-07 10:12:03
【问题描述】:
我正在寻找上传包含一些数据页面的 PDF 声明,但是上传到 S3 的 PDF 一直返回空白页。似乎大多数解决方案似乎都围绕着将Buffer 类型转换为base64,我已经尝试过了,我会得到一个空白的PDF。
我已经在 API Gateway multipart/form-data 上手动添加了二进制媒体类型,但它仍然会生成一个空白的 pdf。
如何确保 pdf 不为空白?
import { Handler, Context, Callback } from "aws-lambda";
import S3, { PutObjectRequest } from "aws-sdk/clients/s3";
import httpMultipartBodyParser from "@middy/http-multipart-body-parser";
import httpErrorHandler from "@middy/http-error-handler";
import cors from "@middy/http-cors";
import middy from "@middy/core";
import createError from "http-errors";
const s3 = new S3();
const anonymizer: Handler = async (
event: any,
_context: Context,
callback: Callback
) => {
const {
emailAddress,
pdf: { filename, mimetype, content },
} = event.body;
const uploadRequest: PutObjectRequest = {
Bucket: `anon-${process.env["NODE_ENV"]}`,
Key: `${emailAddress}/${filename}`,
ContentType: mimetype,
Body: content,
};
try {
const { Location } = await s3.upload(uploadRequest).promise();
callback(null, {
statusCode: 200,
body: JSON.stringify({ fileLocation: Location }),
});
} catch (error) {
throw createError(error.statusCode, error.errorMessage, error);
}
};
export const anonymizerHandler = middy(anonymizer)
.use(httpMultipartBodyParser())
.use(httpErrorHandler())
.use(cors());
【问题讨论】:
标签: node.js pdf amazon-s3 aws-lambda serverless-framework