如何在不将完整文件加载到内存的情况下将大文件插入大对象(PostgreSQL)?

时间:2018-03-27 12:06:30

标签: java postgresql hibernate java-ee blob

我使用Hibernate与Java和PostgreSQL将大量文件存储到数据库中。我不希望文件被完全读入内存,因为我内存不足。可能最好的解决方案是读取块并将文件内容作为字节数组推送到我的DB BLOB列。

实体:

@Lob
@Column
private Blob file;

使用BinaryStream下载:

ResourceLibraryModel obj = new ResourceLibraryModel();
InputStream imgStream = obj.getFile().getBinaryStream();

上传文件:

javax.servlet.http.Part part    
InputStream input = part.getFile().getInputStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[10240];
for (int length = 0; (length = input.read(buffer)) > 0;) output.write(buffer, 0, length);
obj.setFile(output.toByteArray());

你能提出一些有效的解决方案。

0 个答案:

没有答案