2014-01-08 2 views
0

Я использую hibernate для вставки файла pdf в виде байтов в базу данных, используя приведенный ниже код.PDF-файл, поврежденный после того, как clob был написан как файл PDF в Java

File file = new File("D:\\test.pdf"); 
byte[] imageData = new byte[(int) file.length()]; 
FileInputStream fileInputStream = new FileInputStream(file); 
fileInputStream.read(imageData); 
fileInputStream.close(); 
emp.setClobdata(new String(imageData)); 
session.save(emp); 

Затем я пытаюсь записать файл из базы данных в pdf-файл. Используя приведенный ниже код. Но pdf-файл поврежден.

Emp emp = (Emp) session.get(Emp.class, 2); 
byte[] b = emp.getClobdata().getBytes(); 
FileOutputStream fout = new FileOutputStream("D:\\some.pdf"); 
fout.write(b); fout.flush(); 

Что я делаю не так с этим кодом?

+0

Вы можете больше узнать о своей базе данных? – dpassage

ответ

2

pdf файлы двоичные, вы должны использовать BLOB, а не CLOB.

также, когда вы читаете из файла, вам нужно использовать что-то вроде DataInputStream.readFully, чтобы убедиться, что вы читаете все данные.

+0

Спасибо за ваш ответ. Я попытался использовать BLOB в моей базе данных. Все еще существует проблема. Не могли бы вы более подробно рассказать о DataInputStream.readFully, что действительно помогло бы мне. – user3173304

+0

@ user3173304 - обновите свой вопрос с помощью своего последнего кода. – jtahlborn

+0

Обновленный код тот же. Все, что я сделал, изменило тип поля базы данных как BLOB. Я испытываю проблемы с вышеупомянутыми фрагментами кода – user3173304

Смежные вопросы