2016-04-19 11 views
1

サーバーの応答データ: code screenshotAngularJSでデータをエクスポートするにはどうすればいいですか?このような

マイ角度コード:

$scope.export = function() { 
    var datas = new Blob([data], { type: 'application/vnd.ms-excel;charset=UTF-8' }); 
    FileSaver.saveAs(datas, '2016-04-20.xlsx'); 
} 

とヘッダ:

Accept-Range:bytes 
Connection:keep-alive 
Content-Disposition:attachment; filename=%E8%A1%A5%E8%B4%B4%E8%B5%84%E6%A0%BC%E5%B7%B2%E5%AE%A1%E6%A0%B8%E4%BF%A1%E6%81%AF%E8%A1%A8.xlsx 
Date:Tue, 19 Apr 2016 17:23:06 GMT 
Transfer-Encoding:chunked 
X-Powered-By:Express 

依存 角度、 FileSaver.jsは、 Blob.js

しかし、私は間違ったファイルを持って、開くことができません、どのように私はこの問題を修正することができますか?ありがとう!

+0

これは、現在のXLSX形式ではなく、古いXLS形式の応答タイプです。 –

答えて

1

私も同様の問題がありました。 Postmanのような3番目のツールから有効なファイルを取得できましたが、自分のコードを所有していませんでした。

HTTPリクエストでresponseTypeblobに設定するのを忘れていると考えました。 これは、バイナリデータを正しく読み取るために必要なようです。

例:

$http({ 
    url: 'your/webservice', 
    method: "POST", 
    data: json, //this is your json data string 
    headers: { 
     'Content-type': 'application/json' 
    }, 
    responseType: 'blob' 
}).success(function (data, status, headers, config) { 
    var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); 
    var objectUrl = URL.createObjectURL(blob); 
    window.open(objectUrl); 
}).error(function (data, status, headers, config) { 
    //upload failed 
}); 

コードがthis answerから来ています。

+0

ResponseTypeが問題になっているようですが、私はあなたのソリューションを試してみます、ありがとうございます。 – Tammeny

+0

こんにちは@Tammeny、あなたは上記のソリューションを試してみましたか? – andrew

+0

私は同じ問題を抱えていて、 'responseType: 'blob''を設定オブジェクトに追加すると実際に問題が解決されました。 – 100grams

関連する問題