4

現在の私のワークフローは次のとおりです。

ボタン クリック イベントで、検索結果が .csv ファイルにエクスポートされ、サーバーに保存されます。ファイルが保存されたら、ダウンロード用にブラウザに送信したいと思います。この質問How to handle conditional file downloads in meteor.jsを使用して、ファイルを保存するメソッドが戻った後に呼び出されるメソッドを作成しました。その方法は次のとおりです。

exportFiles: function(file_to_export) {
    console.log("to export = "+file_to_export);
    Meteor.Router.add('/export', 'GET', function() {
        console.log('send '+file_to_export+' to browser');
        return [200,
        {
           'Content-type': 'text/plain',
           'Content-Disposition': "attachment; filename=" + this.request.query.file
        }, fs.readFileSync( save_path + this.request.query.file )];
    });
}

しかし、私の質問は、そのルートを呼び出す方法ですか? を使用.Router.to('/export?file=filename.ext')しても機能せず、ユーザーは現在のページから離れてしまいます。これをユーザーにシームレスに見せたいのですが、リダイレクトされていることをユーザーに知られたくないのです。誰かが尋ねる前save_pathに、メソッドの外部で宣言されているため、存在します。

4

2 に答える 2

0

ルートが機能する場合、メソッドが戻ったときに、テキスト ファイルへのリンクを含む新しいウィンドウを開くことができます。

既に content disposition ヘッダーを追加しているため、ファイルは常に保存を要求する必要があります。

ファイルにリダイレクトしただけでも、これらのコンテンツ ディスポジション ヘッダーがあるため、セッションを中断せずに保存するよう求められます。

于 2013-08-28T08:41:53.673 に答える