【发布时间】:2021-08-13 18:33:59
【问题描述】:
我有一个基于示例文件处理文件的系统。所以基本上我应该收到带有标题的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);
【问题讨论】:
标签: java spring inputstream