私はしばらくこの問題に悩まされていましたが、なぜこのファイルが firebase に正しくアップロードされていないのか分かりません。以下のコードをfirebase関数で使用してドキュメントを生成し、そのドキュメントをストリームに変換します。最後に、ファイルを書き込むパスを宣言する書き込みストリームを作成し、ドキュメントストリームをfirebaseにパイプしますストレージ書き込みストリーム。
例 1: firebase コンソールを介してファイル システムからアップロードされた PDF。(リンクが機能し、pdf が表示されます)
例 2: firebase 関数で生成され、以下のコードを使用してストレージに書き込まれた PDF
考慮事項:
- 関数から返して Web ブラウザーで表示できるため、PDF が有効であることはわかっています。すべてが期待どおりです。
- 不良ファイルを開こうとすると、何も表示されず、概要画面にリダイレクトされます。
const pdfGen = require("html-pdf");
pdfGen.create(html, { format: "Letter" }).toStream(function (err, stream) {
if (err) return res.status(500).send(err);
var file = storage.bucket()
.file(job.jobNum + "/quote-doc.pdf")
.createWriteStream({
resumable : false,
validation : false,
contentType: "auto",
metadata : {
'Cache-Control': 'public, max-age=31536000'}
});
stream.pipe(file)
.on('error', function(err) {
return res.status(500).send(err);
})
.on('finish', function(data) {
stream.close();
file.end();
res.end();
console.log('finished upload');
});
});