我有一个 servlet,它使用具有以下逻辑的方法:
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(content, out);
out.close();
当我第一次运行它时,一切都按预期进行。如果我尝试使用相同的内容第二次执行相同的过程,则输出为空。我在第二次调试时检查了内容对象,它与第一次的内容相同。你知道会发生什么吗?
最佳答案
假设您没有尝试写入关闭的输出流(这是我的第一个猜测,但您的评论让我认为 servlet 本身被重新调用,这将打开一个新的响应),那么很可能您的输入流需要重置。根据实际流的类型,您可以在流本身上使用标记和重置,也可以重新创建流,或者可以将其作为字节数组复制到内存中以供重用。看这个问题:Read stream twice
关于java - IOUtils.copy 第二次失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14103864/