Как прочитать изображение, хранящееся в oracle SQL BLOB? - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь прочитать изображение, хранящееся в виде большого двоичного объекта в базе данных oracle SQL. Ниже приведен код, который я пробовал до сих пор:

var arrayBufferView = new Uint8Array(x.IMAGE1);
console.log(arrayBufferView)
var blob = new Blob([arrayBufferView], {type: "image/jpg"});
var urlCreator = window.URL || window.webkitURL;
var imageUrl = urlCreator.createObjectURL( blob );
var img = new Image();
img.src = imageUrl;

Однако я получаю испорченные изображения. Я думаю, это из-за x.IMAGE1 полей, которые выглядят так:

enter image description here

1 Ответ

0 голосов
/ 06 января 2020

Объект, который вы видите, является потоком, тип по умолчанию, возвращаемый для больших объектов. Вы можете работать с этим API, как описано здесь: https://oracle.github.io/node-oracledb/doc/api.html# -173-streaming-lobs

В качестве альтернативы, вы можете изменить свой код для извлечения LOB-объекта в виде буфера: https://oracle.github.io/node-oracledb/doc/api.html#getting -lbs-as-string-or-buffer-from-pl sql

const result = await connection.execute(
  `BEGIN lobs_out(:id, :c, :b); END;`,
  { id: 20,
    c: {type: oracledb.STRING, dir: oracledb.BIND_OUT, maxSize: 50000},
    b: {type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: 50000}
  }
);

const str = result.outBinds.c;  // a String
const buf = result.outBinds.b;  // a Buffer

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