如何从mulitpart文件中提取正文和文件名?

问题描述

我正在用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博客。