问题描述
我正在用Java编写AWS lambada。此lambda充当APIGatewayProxyRequestEvent的处理程序。 API网关端点正在将文件作为主体中的multipart / form-data发送。
public class LambdaHandler extends SpringBootRequestHandler<APIGatewayProxyRequestEvent,APIGatewayProxyResponseEvent> {
---
}
在尝试实现业务逻辑时,我首先将主体提取到字节数组中
byte[] file = Base64.decodeBase64(event.getBody().getBytes());
但是当我将这些字节写入字符串以从中提取数据时,会得到以下信息:
log.info("file content : {}",new String(file));
output:
----------------------------728667852190241466147817
Content-disposition: form-data; name=""; filename="testuplode.json"
Content-Type: application/json
this is a test file
----------------------------728667852190241466147817--
解决方法
我发现在使用Java时使用AWS Lambda处理Multipart文件的最佳解决方案是使用Spring云功能。请检查以下GitHub票证以确认功能可用性:
https://github.com/spring-cloud/spring-cloud-function/issues/597
但是,我还设法使用低级API使用核心Java编写了代码,因为该功能在我需要时不可用。我引用了this博客。