2012-12-15 9 views
5

私が要求しているファイルの生データを取得できますが、ブラウザにファイルを提供することができません。 iframeを使用する必要がありますか?angularjsとexpress.jsの間のダウンロードを取得する

//Client code 
    download_file: function (path, callback) { 
     $http.post('/download/client_file', {path:path}). 
      success(function(data, status, headers, config) { 
       console.log(data); //this contains the raw data of the res.download 
            //from the server. 
      }); 
    } 

    //server code 
    res.download(file); // the path is proper 
+0

HTTP GETを行うとうまくいくのですか? (別名、ユーザーがファイルへのリンクをクリックした場合に起こることをエミュレートする) –

+0

GETまたはPOSTを使用するかどうかは関係ありませんでした。私はちょうど適切なフォームデータオブジェクトを持っていませんでした。 –

答えて

2

アイテムをダウンロードするために私のサービスファイルで以下のコードを使用しました。私は、ファイルの種類に応じてhttp://filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/

$('<form action="'+ url +'" method="'+ ('post') +'">'+inputs+'</form>') 
       .appendTo('body').submit().remove(); 
+1

もしできれば、私は+2でしょう。素晴らしい解決策。 'input type =" hidden "name =" json "value =" {{mydata}} "/>'ここで 'mydata'は何らかのオブジェクトであるとします。あなたの '$スコープ'。私のブログの私の完全な例を見てください:http://jessemon.blogspot.com/2013/11/download-data-from-angular-nggrid-as-csv.html – Jess

+0

私はこの同じ問題を抱えています - 私はコントローラを持っていますそれは私の主要なapp.jsに$ http.put()をやっている。私が得たデータレスポンスは、.csvファイルの生の出力でもあり、それを上記のものに置き換えることは私に 'Reference Error:$ is not'が与えられていないことです。 – MonsterWimp757

+1

@ MonsterWimp757 index.htmlで角を付ける前にjqueryを読み込んでいれば$ checkを使いたい – Eric

0

からそれを得た、とヘッダがそれに設定されているか、あなたはそれが非常に簡単に、単にあなたのJSからlocation.href="uriString";を呼び出すことがあります。 JSONやテキストデータの場合は、インラインでレンダリングするのではなく、ヘッダーを調整してダウンロードする必要があるかもしれません(おそらく、 "content-disposition:attachment"、おそらく、 ..)

関連する問題