首页 > 解决方案 > 如何将图像原始数据转换为图像

问题描述

我想显示由 nodejs 中的 spring boot api 返回的用户文档文件,但该文件未显示。

这是我的spring boot 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的request模块将请求发送到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 的响应在这里(图像数据) 在此处输入图像描述

请帮助我,我到处搜索,但找不到任何解决方案。

标签: node.jsspring-boot

解决方案


您需要encoding: nullrequest.get()选项中进行设置。

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

来自request 文档

encoding - 用于响应数据的 setEncoding 的编码。如果为 null,则正文作为缓冲区返回。其他任何内容(包括 undefined 的默认值)都将作为编码参数传递给 toString() (这意味着默认情况下这实际上是 utf8)。(注意:如果您需要二进制数据,则应设置 encoding: null。)


推荐阅读