2017-05-11 19 views
0

私はsailsjsに新しいです。私の問題はファイルが直接ダウンロードしていないことです.Sailsjsアプリフォルダlike this pictureに保存していました。いくつかの例を試してみましたが、ファイルはダウンロードしていませんでした。この問題が起こるのは避けてください。どんなプランジャーであれ、それは私には完全に使用されます。ファイルをセイルjsでダウンロード

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}); 
     } 
    }); 



} 

上記のコードは、上の写真に示すように、それは私の帆アプリケーションでファイルを保存したfile.Butをダウンロードしていない私のcontroller.jsファイルです。

+0

にコードを変更すると

npm install skipper-disk --save 

スキッパー・ディスクをインストールするだろうか? –

+0

試してみてくださいhttp://expressjs.com/en/4x/api.html#res.sendFile – Sangharsh

答えて

0

このコントローラーを使用してファイルを直接ダウンロードする場合。あなたは帆でスキッパーディスクパッケージを使用することができます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}); 
    } 
}); 

あなたはすぐにあなたのコードがある場合は、この

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); 
    } 
}); 
関連する問題