2016-03-17 73 views
0

我正在使用loopback框架。 我想閱讀PDF文件並返回響應二進制數據,因爲在前端我需要顯示PDF文件。節點Loopback + API響應返回二進制數據

var fs = require('fs'); 

module.exports = function(Pdf) { 

    Person.getPdf = function(msg, cb) { 
     fs.readFile('test.pdf', 'utf8', function(err, data) { 
      if (err) { 
       return console.log(err); 
      } 
      console.log(data); 
      cb(null, 'data'); 
     }); 
    } 

    Pdf.remoteMethod('getPdf', { 
     accepts : { 
      arg : 'msg', 
      type : 'string' 
     }, 
     returns : { 
      arg : 'greeting', 
      type : 'string' 
     }, 
     http : { 
      path : '/pdf/preview', 
      verb : 'post' 
     }, 
    }); 
}; 

如何返回二進制數據的檢驗.pdf

+0

你的代碼是錯誤的你試圖在模型中提供二進制數據,這並不好。 – num8er

+0

@ num8er - 你能推薦一些其他方法嗎? – RSKMR

+0

我希望test.pdf能夠在瀏覽器中顯示。但文件名只知道後端。 – RSKMR

回答

1

試試這個:

文件:普通/模型/ pdf.js

module.exports = function(Pdf) { 

    Pdf.review = function(res, callback) { 
    res.set('Content-Type','application/octet-stream'); 
    res.set('Content-Disposition','attachment;filename=review.pdf'); 
    res.set('Content-Transfer-Encoding','binary'); 
    fs.readFile('test.pdf', 'binary', function(err, data) { 
     if(err) { 
     console.error(err); 
     } 
     res.send(data); 
    }); 
    }; 

    Pdf.remoteMethod('review', 
    { 
    accepts: [] 
    returns: {}, 
    http: {path: '/review', verb: 'get'} 
    }); 

}