2016-10-02 5 views
1

.xlsxファイルを生成してから"../web.browser/app/cheques.xlsx"に配置します。私が理解しているように、ビルド内のパブリックフォルダと同等です。問題は、私がそれをダウンロード可能にすることができないということです。パブリックフォルダからファイルをダウンロードできるようにするMeteor.js

これは私がその場所にファイルを配置し、サーバーメソッドのコードの断片である:

workbook.xlsx.writeFile("../web.browser/app/cheques.xlsx") 
    .then(function() { 
    console.log('done'); 
    }); 

だから私は仕事をするfsまたはPicker.routeを使用する必要がありますか?

答えて

3

これを行うことをお勧めしません。プロダクションでは、ビルドディレクトリは使用できません。他のApacheのようなものがで

  • Storeから ファイルを提供できることを、ファイルシステム(ない /パブリック)で定義された場所に

    1. ストアファイル:

      あなたはいくつかの選択肢を持っていますAmazon S3のバケット、その後、AWSはこの https://github.com/vsivsi/meteor-file-collection
    のようなパッケージをuing、Mongoのコレクションに
  • ストアファイルをそれらを提供しましょう

    すべてのデータとファイルが1つの場所にあるので、最後の方が好きです。ここで

  • +0

    ご返信ありがとうございます。サーバーやクライアントにファイルを保存せずにストリームを作成しただけです。私は下の私の解決策を示すが、あなたの答えを正しいものとしてマークする。 –

    2

    は私は非常に満足して作られたソリューションです。私の友人の命題のおかげで、私はserver-side route.xlsx生成コードを配置:


    Excel = require('exceljs'); 
    fs = require('fs'); 
    
    Picker.route('/export/:_cheques', function(params, req, res, next) { 
        let data = Cheques.find(query).map((it) => { 
         return { 
         cheque_number: it.cheque_number, // & other data 
         } 
        }); 
    
        let workbook = new Excel.Workbook(); 
    
        let sheet = workbook.addWorksheet('Cheques', { properties: { tabColor: { argb: 'FFC0000' } } }); 
    
        sheet.columns = [ 
         { header: 'Номер чека', key: 'cheque_number', width: 30 }, // & other columns 
        ]; 
    
    
        data.map(function(it) { 
         sheet.addRow({ 
         cheque_number: it.cheque_number, // & other data 
         }) 
        }); 
    
        res.writeHead(200, { 
         'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 
         'Content-Disposition': headerFilename, 
        }); 
    
        workbook.xlsx.write(res) 
    )}; 
    

    は、その後、私はちょうど私のhtml内のリンクを追加しました:


    <a href='/export/all' rel='external' download> Export my file </a> 
    

    ...それは完璧に動作します。あなたが言うように:「魅力のように」)

    私はこれが誰かを助けることを望みます。

    +0

    それは優れた解決策です、良い結果です!覚えておく価値があります。 – Mikkel

    +0

    ありがとう、マイク!ではごきげんよう。 –

    +0

    これはウェブ向けにしか動作しません。 –

    関連する問題