如何解决在进一步处理之前更新 InputStream
我有一个系统,可以根据示例文件处理文件。所以基本上我应该收到带有标题的excel文件,然后是带有信息的行。现在,用户发送一些在 Apache POI 中无法处理的附加标头和尾标。
我在 GUI 上添加了额外的字段,用户可以在其中添加额外的前导行和尾随行,这样我就可以在解析 excel 时删除它们。所以基本上我在 spring 端点上收到一个文件作为 InputStream 然后验证发生,然后文件被推送到 S3。所以我想知道是否有机会在 S3 上传之前更新那个 InputStream 并删除那些错误的记录?
我是否需要保存更新后的文件,然后读回它以获得新的 InputStream 或者有什么更好的方法来做到这一点?
public InputStream cleanFileBeforeS3Upload(InputStream inputStream,Definition definition) throws IOException,InvalidFormatException {
var workbook = WorkbookFactory.create(inputStream);
var sheet = workbook.getSheetAt(0);
ExcelUtils.removeLeadingAndTrailingRowsFromExcel(sheet,definition.getTrimLeadingRows(),definition.getTrimTrailingRows());
// ????? How to get new updated inputstream from above workbook
return inputStream;
}
//Line which upload file to S3
var request = new PutObjectRequest(s3Properties.getBucket(),s3ObjectKey,file.getInputStream(),metadata);
解决方法
我认为您可以执行以下操作:
...
var out = new ByteArrayOutputStream();
workbook.write(out);
return new ByteArrayInputStream(out.toByteArray());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。