【问题标题】:Update InputStream before further processing在进一步处理之前更新 InputStream
【发布时间】: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


    【解决方案1】:

    我认为你可以这样做:

    ...
    var out = new ByteArrayOutputStream();
    workbook.write(out);
    return new ByteArrayInputStream(out.toByteArray());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 2019-11-05
      相关资源
      最近更新 更多