gpt4 book ai didi

java - 如何从java中的Workbook对象获取inputStream

转载 作者:行者123 更新时间:2023-11-30 06:14:19 25 4
gpt4 key购买 nike

当我上传文件时,我将输入流传递到工作簿。现在我想在另一种方法中使用工作簿中的这个 InputStream ,比如保存我将文件 InputStream 保存到数据库的地方。这是我的代码。

public void FileUpload(FileUploadEvent event) throws ParseException  {
UploadedFile item = event.getUploadedFile();
Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(item.getInputStream());
}

现在我想将 Workbook 对象作为实例变量并传递给另一个方法,如下所示。

public String save() throws SQLException, IOException{
fileId = dao.savefile(workbook,fileName);
}

在我的保存文件方法中

InputStream inptest=  **workbook.getStream**
ps.setBinaryStream(2,fin,fin.available());

所以 inptest 变量接受我想从 Workbook 获取的 InputStream

最佳答案

听起来您要求的是一种将 InputStream 用于多种用途的方法:

  1. 创建工作簿对象(您已经在做)
  2. 将 InputStream 的内容保存到别处

由于从 InputStream 读取通常是一次性操作,不能重复,那么您可以执行以下操作:

  1. 将 InputStream 的全部内容保存到缓冲区。
  2. 从缓冲区中打开两个新的 InputStreams。
  3. 将您的 InputStreams 传递给您的两个方法。

代码可能如下所示:

public void FileUpload(FileUploadEvent event) throws ParseException  {
UploadedFile item = event.getUploadedFile();
InputStream originalInputStream = item.getInputStream();

byte[] buffer = IOUtils.toByteArray(originalInputStream);
InputStream is1 = new ByteArrayInputStream(buffer);
InputStream is2 = new ByteArrayInputStream(buffer);

Workbook workbook = org.apache.poi.ss.usermodel.WorkbookFactory.create(is1);
}

InputStream inptest = is2;
ps.setBinaryStream(2,fin,fin.available());

注意:这里使用 Apache Commons IO library对于 IOUtils。

关于java - 如何从java中的Workbook对象获取inputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com