Преобразовать BLOB-объект в строку в, чтобы создать объект json, а затем изменить строку обратно на BLOB-объект - PullRequest
0 голосов
/ 08 ноября 2018

Мое требование - преобразовать BLOB-объект в поле базы данных в строку, чтобы создать объект json. Я достиг этого.

Теперь мне нужно преобразовать эту строку обратно в blob. Я написал код ниже. Но это не работает. В моем случае, текстовый документ хранится как блоб. Я преобразовал его в строку, но когда я преобразовал строку в blob, документ не открывается должным образом.

Пожалуйста, дайте мне знать, как преобразовать строку обратно в BLOB-объект.

DocumentTemplateKey documentTemplateKey = new DocumentTemplateKey();
documentTemplateKey.documentTemplateID = "XX";
DocumentTemplateDtls documentTemplateDtls = DocumentTemplateFactory.newInstance().read(documentTemplateKey);

byte[] blobAsBytes = documentTemplateDtls.contents.copyBytes();

ByteArrayOutputStream bos = new ByteArrayOutputStream();


bos.write(blobAsBytes, 0, blobAsBytes.length);

String pdfBase64String = 
  org.apache.commons.codec.binary.StringUtils.newStringUtf8(org.apache.
  commons.codec.binary.Base64.encodeBase64(bos.toByteArray()));

OutputStreamWriter out = new OutputStreamWriter(System.out);
JsonWriter writer = new JsonWriter(out);
//set indentation for pretty print
writer.setIndent("\t");
//start writing
writer.beginObject(); //{
writer.name("blob").value(pdfBase64String);
byte[] stringAsBytes =  org.apache.commons.codec.binary.StringUtils.getBytesUtf8(pdfBase64String);

Blob blob = new Blob(stringAsBytes);
documentTemplateDtls.contents = blob;
documentTemplateDtls.documentTemplateID = "XX12";
documentTemplateDtls.name = "XX12";
DocumentTemplateFactory.newInstance().insert(documentTemplateDtls);
writer.endObject();

writer.flush();

//close writer
writer.close();

1 Ответ

0 голосов
/ 08 ноября 2018

Вот ваша проблема:

byte[] stringAsBytes = org.apache.commons.codec.binary.StringUtils.getBytesUtf8(pdfBase64String);

Вы получаете байты вашей строки base64, но вы должны поместить ее через декодер base64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...