2016-04-26 65 views
1

我使用pdfKit來生成一些pdf文件。用戶應該點擊一個按鈕來獲得這個文件 - 當時在服務器上生成的文件。此外,我正在使用Picker進行服務器端路由。流星:通過點擊按鈕獲取服務器端生成的文件

server.js

Picker.route('/generate/getPdf', function(params, req, res, next) { 
    var doc = new PDFDocument({size: 'A4', margin: 50}); 
    doc.fontSize(12); 
    doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200}); 
    res.writeHead(200, { 
     'Content-Type': 'application/pdf', 
     'Content-Disposition': 'attachment; filename=test.pdf' 
    }); 
    res.end(doc.outputSync()); 
}); 

HTML

<template name="example"> 
    <button id="generatePdf">Generate it</button> 
</template> 

client.js

Template.example.events({ 
    'click #generatePdf': function(event) { 
     HTTP.call('GET', 'http://localhost:3000/generate/getPdf', {}, function(error, response) { 
      if (error) { 
       console.warn(error); 
      } 
     }); 
    } 
}); 

我期望得到我點擊按鈕的PDF文件,但沒有任何事情發生。如果我手動去網址,我會得到這個文件。那麼我做錯了什麼?

回答

1

因爲您已經將Content-Disposition標題設置爲附件,所以最簡單的解決方案是在新選項卡中開始下載。

嘗試刪除您click #generatePdf事件處理程序,做這樣的事情在你的模板:

<a id="generatePdf" href="//localhost:3000/generate/getPdf" target="_blank">Click Me</a>