我是sailsjs的新手我的问题是文件没有直接下载。它存储在sailsjs应用程序文件夹like this picture 。我尝试了几个例子但文件没有下载。所以请帮助我如何过来这个问题。如果有任何柱塞它会对我充分使用。谢谢。
controller.js
downlodrentreceiptpdf:function(req,res){
var rentData = req.param('data');
sails.log('<<<<<<<-------------------UtilityController().downlodRentReceiptPdf-----------inside pdf method------>>>>>>');
var resultList = [];
var date = new Date("10/14/2015");
var endDate = new Date("03/13/2016");
sails.log('<<<<<<<-------------------UtilityController().downlodRentReceiptPdf-----------Testing 2------>>>>>>');
var months = endDate.getMonth() - date.getMonth()
+ (12 * (endDate.getFullYear() - date.getFullYear()));
sails.log("months--->"+months)
var template="";
template = template+ '<style>'+
'html, body {'+
'height: 100%;'+
'}'+
'#tableContainer-1 {'+
'height: 100%;'+
'width: 100%;'+
'display: table;'+
'}'+
'#tableContainer-2 {'+
'vertical-align: middle;'+
'display: table-cell;'+
'height: 100%;'+
'}'+
'#myTable > td,'+
'#myTable > th{'+
'margin: 0 auto;'+
'border:1px solid black;'+
'}'+
'#myTable{'+
'margin: 0 auto;'+
'}'+
'#tableth {'+
'text-align:center;'+
'}'+
'</style>'+
'<div id=\"tableContainer-1\">'+
'<div id=\"tableContainer-2\">'+
'<table id=\"myTable\" style=\"border:1px solid black;border-collapse:collapse;\">'+
'<tr >'+
'<th colspan=\"2\" style=\"border:1px solid black;\">RENT RECEIPT</th>'+
'</tr>'+
'<tr border=\"0\" >'+
'<td style=\"border:1px solid black;\">Tenant’s Name :</td>'+
'<td style=\"border:1px solid black;\"> '+ rentData.name +' (Employee ID: '+rentData.employee+' ) </td>'+
'</tr>'+
'<tr border=\"0\">'+
'<td style=\"border:1px solid black;\">Property Address :</td>'+
'<td style=\"border:1px solid black;\">'+rentData.address+
'</td>'+
'</tr>'+
'<tr border=\"0\">'+
'<td style=\"border:1px solid black;\">Rent Amount :</td>'+
'<td style=\"border:1px solid black;\"> '+rentData.rent+' </td>'+
'</tr>'+
'<tr border=\"0\">'+
'<td style=\"border:1px solid black;\">Period From :</td>'+
'<td style=\"border:1px solid black;\">'+ rentData.pfrom +'</td>'+
'</tr>'+
'<tr border=\"0\">'+
'<td style=\"border:1px solid black;\">Period To :</td>'+
'<td style=\"border:1px solid black;\">'+ rentData.pto +'</td>'+
'</tr>'+
'</table>'+
'</div>'+
'</div>'
//sails.log("html template------->"+template);
var options = {
"height": "5.5in",
"width": "8in",
"format": 'Letter',
// Page options
"border": {
"top": "2in", // default is 0, units: mm, cm, in, px
"right": "1in",
"bottom": "2in",
"left": "1.5in",
"type": "pdf", // allowed file types: png, jpeg, pdf
"quality": "75",
"directory": "/tmp"
},};
htmltopdf.create(template, options).toFile('rentreceipt.pdf', function (err, file) {
if (err) {
return next(err);
} else {
console.log(file);
res.json({filepath: file.filename});
}
});
}
上面的代码是我的controller.js文件,它没有下载文件。但是它将文件存储在我的sails应用程序中,如上图所示。
答案 0 :(得分:0)
如果要使用此控制器直接下载文件。您可以将skipper-disk软件包与sails https://www.npmjs.com/package/skipper-disk一起使用。
然后而不是
htmltopdf.create(template, options).toFile('rentreceipt.pdf', function (err, file) {
if (err) {
return next(err);
} else {
console.log(file);
res.json({filepath: file.filename});
}
});
您可以快速安装skipper-disk
npm install skipper-disk --save
然后将您的代码更改为此
htmltopdf.create(template, options).toFile('rentreceipt.pdf', function (err, file) {
if (err) {
return next(err);
} else {
console.log(file);
// including skipper-disk
var SkipperDisk = require('skipper-disk');
var fileAdapter = SkipperDisk();
// using the fileadapter to pipe the response
fileAdapter.read(file.filename).on('error', function (err) {
return next(err);
}).pipe(res);
}
});