0
我最近部署了一個用Node.js編寫的Heroku應用程序,到目前爲止一切正常。Heroku從本地文件系統提供文件
但是,我得到部署的應用程序來顯示應用程序生成的PDF文件的問題。
我有一個頁面,允許人們從他們在頁面上輸入的某些信息動態生成PDF文件。
的部分看起來像這樣:
的Generate PDF
按鈕提交POST
請求動態創建從頁面上的HTML視圖,並使用HTML-PDF
模塊把它變成一個PDF文件。
的代碼看起來是這樣的:
router.post('/formulas/:id/pdf', function(req, res){
var db = req.db.collection('users');
var id = new ObjectID(req.params.id);
var pointer = {"formulas.$": 1, "_id": 0};
db.aggregate([
{$match: {"formulas.f_id": id}},
{$unwind: "$formulas"},
{$match: {"formulas.f_id": id}},
{$project : {"formulas": 1, "_id": 0}}
]).toArray(function(e, doc){
if (e) {
throw e;
} else {
var html = null;
ejs.renderFile('./views/pdf.ejs', {
project: doc[0].formulas,
title: 'Formula Info Report',
description: 'PDF Report For Your Formula by Nutraceutical Pro',
ID: 'pdf',
keywords: 'PDF, PDF generator, Formula Info Report',
user: req.user,
loggedIn: req.isAuthenticated()
}, function(err, results){
if (err) {
console.log(err);
}
html = results;
});
var options = { format: 'Letter' };
var path = './public/pdf/formula-' + req.params.id + '.pdf';
pdf.create(html, options).toFile(path, function(err, results) {
if (err) {
return console.log(err);
}
if (results) {
res.end();
}
});
}
});
});
在我的本地機器能正常工作。但是,當部署到Heroku時,我得到一個Cannot GET
錯誤,因爲它試圖從我的本地服務器獲取文件。
這是當POST
提交請求生成一個例子網址:
這究竟是爲什麼?
那麼答案就如同將POST請求改爲GET請求一樣簡單嗎?爲什麼它試圖從本地文件系統中「GET」文件而不是Heroku服務器上的相應位置? –
在Heroku應用上,當你點擊「生成PDF」按鈕時,你是否重定向到本地主機? 「生成PDF」只能創建PDF文件或下載它?如果是這樣,嘗試改變'res.end();''res.download()' –