APIからデータを正常に受信するノードに取得リクエストがあります。ファイルへのノード要求の書き込みが壊れています
このようなファイルに直接応答を送ると、作成されたファイルは有効で読み取り可能なpdfです(APIから受け取ることを期待しています)。シンプル
var http = require('request');
var fs = require('fs');
http.get(
{
url:'',
headers:{}
})
.pipe(fs.createWriteStream('./report.pdf'));
、私は、このファイルの書き込みのすべての方法を試してみましたが、それは常に完全に空白PDFで終わるこの
http.get(
{
url:'',
headers:{}
})
.on('error', function (err) {
console.log(err);
})
.on('data', function(data) {
file += data;
})
.on('end', function() {
var stream = fs.createWriteStream('./report.pdf');
stream.write(file, function() {
stream.end();
});
});
のような要求のイベントエミッタを使用する場合は、ファイルが壊れてしまいました - pdfが有効である唯一の時間はpipeメソッドです。
イベントログにイベントが記録されると、シーケンスが正しいと思われます。つまり、すべてのチャンクが受信され、最後にend
が発生します。
パイプの後に何かをすることは不可能です。 writestreamとパイプの違いは何ですか?
uが私はそれをやっていた方法だと思いますか実際にはレスポンスがutf8であっても、文字列を使用することは問題になりますか? – yoyoma
@yoyoma PDFにはバイナリデータが含まれている可能性がありますが、完全に100%UTF-8でエンコードされているわけではありません(PDFの_text_は可能ですが、PDF内にはたくさんのものがあります)。 – robertklep
thxたくさんこれは正しく働いていたものです - 以前はいろいろなバッファを試しましたが、正しく連結したとは思いません – yoyoma