0
pdf 파일을 가져 와서 디스크에 저장하려고합니다. 이것은 (200킬로바이트에 대한) 적절한 크기의 디스크에있는 PDF 파일을 저장NodeJS 요청에서 pdf 파일을 가져 와서 디스크에 저장하지만 빈 흰색 페이지로 열림
request.post({
url: some_api_url,
json: true,
body: {
by: user,
password: 'mypassword'
}
}, function(err, response, body) {
if (err) next(err);
else {
if (typeof(body) == 'string') {
//console.log(body);
fs.writeFileSync(path.join(__dirname, 'abc.pdf'), body, 'binary', function(err) { console.log(err);});
} else {
console.log("invalid file");
}
}
});
POST 요청의 본문에 데이터가 있음을 의미합니다 : 다음은 내 코드입니다. 그러나 pdf는 우분투의 문서 뷰어에서 공백으로 열립니다.
나는 pdf 파일의 pdf | less 출력을 비교해 보았습니다. pdf 파일은 (잘 열립니다) 요청과 다운로드 된 파일의 상단과 하단은 동일합니다.
아래는 PDF 파일을 제공하는 API 코드입니다. 우편 배달부에서 요청을하면 pdf 파일이 다운로드되어 디스크에 저장되고 정상적으로 열립니다.
let fileStat = fs.statSync(filePath);
res.writeHead(200, {
'Content-Disposition': 'attachment; filename="report.pdf"',
'Content-Type': 'application/pdf',
'Content-Length': fileStat.size
});
let readStream = fs.createReadStream(filePath);
res.on('finish', function() {
console.log("file sent");
});
readStream.pipe(res);