我有一个包含pdf文件的文件zip,所以:
这是执行此操作的代码:
FileInputStream fis = new FileInputStream("C:\\Users\\manu\\Documents\\zipFile.zip");
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));//decompression
ZipEntry entry;
//int i=0
while((entry = zis.getNextEntry()) != null) {
//check if the file is a directory
if(!entry.isDirectory()){
println(entry.getName());
ByteArrayOutputStream output = new ByteArrayOutputStream();
int data = 0;
while( ( data = zis.read() ) != - 1 )
{
output.write( data );
}
byte[] b = output.toByteArray();
//--------------------save in database table invoice the document
byte[] pdf=b
String PDFName=entry.getName()
def fact= new Fact( pdf:valpdf ,PDFName: PDFName)
fact.save()
//----------------------------------save in table Fact the document
// The ZipEntry is extracted in the output
println("saved successfully")
output.close();
}
}
zis.close();
fis.close();
问题是:我必须将PDF文件(zip条目)拆分为图像,并将它们作为数组字节保存在另一个数据库表中,这是我找到的代码
FileOutputStream fileOuputStream =
new FileOutputStream("C:\\testing.pdf");
fileOuputStream.write(b);
fileOuputStream.close();
有没有办法在不创建物理文件的情况下执行此操作
答案 0 :(得分:0)
我不确定你的数据库是什么,以及Fact的对象是什么。
如果要将pdf文件存储到数据库中,
注意**,您不需要创建物理文件
参考:https://stackoverflow.com/a/19971334/2182351 -
String sql = "INSERT INTO testtable(stringcolumn, blobcolumn) VALUES(?,?)";
PreparedStatement statement = conn.getConnection().prepareStatement(sql);
statement.setLong(1, version);
ByteArrayInputStream bais = new ByteArrayInputStream(b); // Here b is byte array from your sample code
statement.setBlob(2, bais);
statement.execute();
conn.commit();