用例是从服务器获取文件内容,并使用节点JS将其发送到浏览器。
详细信息:
用Java读取文件(PDF,图像文件)(使用spring框架公开端点)
@RequestMapping(value = "/getFileContent", method = RequestMethod.GET)
public void getFileContent(HttpServletResponse response) throws IOException {
try {
File file = new File("src/main/resources/SampleDoc.pdf");
InputStream targetStream = new FileInputStream(file);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "inline; filename="+"sample.pdf");
IOUtils.copy(targetStream, response.getOutputStream());
} catch (Exception e) {
LOG.error("Document Download Error", e.getMessage());
}
}
获取流并将其转换为pdf文件并在浏览器中显示:
router.get('/openfile', function(req, res, next) {
console.log("get call");
request('http://localhost:8080/getFileContent', function (error, response, body) {
if (!error && response.statusCode == 200) {
var file= fs.createReadStream(response.body);
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'inline; filename=sample.pdf');
file.pipe(res);
}
})
});
上面的代码抛出错误说" Path必须是没有空字节的字符串"。
请建议一个节点模块从java接收servlet响应输出流,并在浏览器中打开该文件。
或建议可以从服务器发送的对象类型,以便我可以将其转换为节点中的image / pdf文件。
答案 0 :(得分:2)
您可以像下面一样管道响应流,
router.get('/openfile', function(req, res, next) {
req.pipe(request.get('http://localhost:8080/getFileContent')).pipe(res); });