我想在nodejs中显示spring引导api返回的用户文档文件但是该文件没有显示。
这是我的春季启动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的响应在这里(图片数据(在此处输入图像描述
请帮帮我,我到处找这个,但找不到任何解决方案。
您需要在request.get()
选项中设置encoding: null
。
request.get({ url: url, qs: form, headers: header, encoding: null })
来自request
文档:
encoding-用于响应数据的setEncoding的编码。如果null,则返回正文作为Buffer。其他任何东西(包括默认值undefined(将作为编码参数传递到toString(((意味着默认情况下这实际上是utf8(。(注意:如果如果需要二进制数据,则应设置编码:null。(