我正在使用PostgreSQL大对象API来存储二进制文件。 我需要实现一个资源来下载这个文件。 下载资源生成一个' application / octet-stream'响应。 我明白了,我应该回来自动提交'真的'下载完成后。如果我设置自动提交'最后' (如下面的代码所示),文件未被下载。
我是否需要实现一些InputStream扩展,并且只设置' auto commit'真的'什么时候关闭流? 在这里采取的最佳方法是什么?
try (Connection connection = Portal.getInstance().getConnectionProvider().getConnection())
{
try
{
connection.setAutoCommit(false); //large objects cannot be used in auto commit mode
PGConnection pgConnection = connection.unwrap(PGConnection.class);
LargeObjectManager largeObjectManager = pgConnection.getLargeObjectAPI();
LargeObject largeObject = largeObjectManager.open(largeObjectId, LargeObjectManager.READ);
return largeObject.getInputStream();
}
finally
{
//connection.setAutoCommit(true);
}
答案 0 :(得分:1)
仅返回输入流不构成下载。您必须完成下载,即将输入流读取到其末尾,然后设置自动提交。