как преобразовать необработанные данные изображения в изображение - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу показать файл документа пользователя, который возвращается через API весенней загрузки в nodejs, но файл не отображается.

Вот мой код API весенней загрузки

httpServletResponse.setHeader("Content-Disposition", "inline; filename=" + storeDocName + "");
httpServletResponse.setContentType(fileType);
httpServletResponse.setContentLengthLong(Files.readAllBytes(file.toPath()).length);
httpServletResponse.getOutputStream().write(Files.readAllBytes(file.toPath()));

Вот мой код js узла

requestMethodGetForImageData: function(url, form, header) {

    return new Promise((resolve, reject) => {

        //SET ALL THESE PARATMETER TO MAKE REQUEST
        request.get({ url: url, qs: form, headers: header }, function(error, response, body) {
            var result = {
              body: response.body,
              header: response.headers['content-type']
            };
            resolve(result);
          }
        });

    });
},

Я использую модуль запроса nodejs для отправки запроса в Spring API и здесь, в nodejs, явызывая эту функцию запроса

router.get("/loadStoreDocument", function(req, res) {

  var url = httpProtocol + httpServer + servicePort + serviceUrl;

  //SET HEADER
  headers = {
    'Authorization': "token"
  };

  //SET FORM DATA
  form = {
    account_id: "id",
    token_type: "token_type",
    document_child_id: "id"
  };
  requestHandling.requestMethodGetForImageData(url, form, headers)
    .then((result) => {
      res.header("content-type", result.header);
      res.send(result.body);
    }).catch((err) => {
      console.log("ERROR IN GET STORE PROFILE");
      console.log(err);
      res.send(err);
    });
});

Но когда я вызываю этот URL (loadStoreDocument), он возвращает изображение, подобное этому введите описание изображения здесь

Ответ Spring API здесь (данные изображения) введите описание изображения здесь

Пожалуйста, помогите мне, я ищу это везде, но не смог найти никакого решения.

1 Ответ

0 голосов
/ 08 декабря 2018

Вам необходимо установить encoding: null в request.get() опциях.

request.get({ url: url, qs: form, headers: header, encoding: null })

Из request документы :

кодировка - кодировка, которая будет использоваться в setEncoding данных ответа.Если ноль, тело возвращается как Буфер.Все остальное (включая значение по умолчанию undefined) будет передано в качестве параметра кодирования toString () (это означает, что по умолчанию это utf8).(Примечание: если вы ожидаете двоичные данные, вы должны установить кодировку: ноль.)

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