0
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リクエストのボディにデータがあることを意味する(200キロバイト程度)右のサイズとディスク上のPDFファイルを保存します。しかし、pdfはUbuntuのドキュメントビューアで空白になります。
また、作業中のpdfファイル(これはうまく開きます)の出力と "cat abd.pdf | less"の出力を比較して、リクエストとトップとボトムの両方でダウンロードしたファイルは同じです。
以下は、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);