使用Jersey和Apache POI上载excel文件-获取ZIP异常-存储的块长度无效

使用Jersey和Apache POI上载excel文件-获取ZIP异常-存储的块长度无效,jersey,apache-poi,aws-api-gateway,tomcat8,xlsx,Jersey,Apache Poi,Aws Api Gateway,Tomcat8,Xlsx,我有一个使用Jersey编写的REST端点,看起来像这样,我试图上传一个excel文件,并使用ApachePOI读取其内容 @Path("/batch") @POST @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces(MediaType.APPLICATION_JSON) public Response batchUploadAssets(@HeaderParam(HttpHeaders.AUTHORIZATIO

我有一个使用Jersey编写的REST端点,看起来像这样,我试图上传一个excel文件,并使用ApachePOI读取其内容

@Path("/batch")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public Response batchUploadAssets(@HeaderParam(HttpHeaders.AUTHORIZATION) final String authorizationHeader,
            @HeaderParam(CustomVamsHeaders.ORGANISATION) final Integer vamsOrg,
            final FormDataMultiPart formDataMultiPart,
            @Context final ContainerRequestContext request) {

   BodyPart bodyPart = formDataMultiPart.getBodyParts().get(0);

   final BodyPartEntity entity = (BodyPartEntity) bodyPart.getEntity();

   InputStream inputStream = entity.getInputStream();

   XSSFWorkbook workbook = new XSSFWorkbook(inputStream); -> This line throws the exception below

}
异常堆栈跟踪

java.util.zip.ZipException: invalid stored block lengths
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:586)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readDeflated(ZipArchiveInputStream.java:551)
at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.read(ZipArchiveInputStream.java:458)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.read(ZipArchiveThresholdInputStream.java:78)
.......
.......
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
java.util.zip.ZipException:存储的块长度无效
位于org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readFromInflater(ZipArchiveInputStream.java:586)
位于org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.readDeflated(ZipArchiveInputStream.java:551)
位于org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.read(ZipArchiveInputStream.java:458)
在java.io.FilterInputStream.read(FilterInputStream.java:133)中
位于org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.read(ZipArchiveThresholdInputStream.java:78)
.......
.......
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:307)

当我在本地tomcat实例上运行我的应用程序时,它工作正常。然而,当我将我的应用程序部署到EC2实例并通过AWSAPI网关访问它时,就会出现此错误。知道我需要做什么不同吗?

检查通过EC2和本地tomcat上传的字节是否不同。我的猜测是API网关做出了一些改变。我也犯了同样的错误,但没有使用tomcat。这篇文章很有帮助,也许你可以用某种方式使用它:检查通过EC2和本地tomcat上传的字节是否不同。我的猜测是API网关做出了一些改变。我也犯了同样的错误,但没有使用tomcat。这篇文章很有帮助,也许你可以用一些方法: