2017-05-23 16 views
0

私のサーバはExcelファイルを動的に生成します。私はAJAXを使って動的エクセルファイルをダウンロードしています。成功コールバックでは、私はExcelファイルデータを受け取ります。hrefでExcelファイルをダウンロードする

$.ajax({ 
      url: exporting.action, 
      headers: { "Authorization": "Basic " + btoa("key : " + key) }, 
      type: "post", 
      success: function(res){ 
       //res is the excel file that needs to be downloaded 
       //I know we can download image using anchor tag but not sure about excel file 
      }, 
      data: { 'Model': JSON.stringify(modelClone) } 
     }); 

ダウンロードするためのアンカータグのhref属性にこのデータを使用する方法を提案してください?

注:

1)私はdataType: "binary"responseType: "arraybuffer"プロパティを追加することによって、あなたの要求を改善ヘッダ承認

答えて

1

のためのAJAXを必要としています。

$.ajax({ 
    url: exporting.action, 
    headers: { "Authorization": "Basic " + btoa("key : " + key) }, 
    type: "post", 
    responseType: "arraybuffer", 
    dataType: "binary", 
    success: function(res){ 
     //res is the excel file that needs to be downloaded 
     //I know we can download image using anchor tag but not sure about excel file 
    }, 
    data: { 'Model': JSON.stringify(modelClone) } 
}); 

次に、BlobとオブジェクトのURLから簡単にダウンロードできる配列バッファーを受け取ります。あなたのケースで

var blob = new Blob([arraybuffer], {type: "application/vnd.ms-excel"}); 
var objectUrl = URL.createObjectURL(blob); 
window.open(objectUrl); 

$.ajax({ 
    url: exporting.action, 
    headers: { "Authorization": "Basic " + btoa("key : " + key) }, 
    type: "post", 
    success: function(res){ 
     var blob = new Blob([res], {type: "application/vnd.ms-excel"}); 
     var objectUrl = URL.createObjectURL(blob); 
     window.open(objectUrl); 
    }, 
    data: { 'Model': JSON.stringify(modelClone) } 
}); 
+0

おかげで、私はそれは問題がサーバからの配列バッファとしてExcelファイルを返して – Kira

+0

を試してみるだろう。私はサーバーからのデータを制御できません。サードパーティのライブラリは、それを直接クライアントブラウザに返します。私は第三者図書館に私のデータを渡すだけです – Kira

+0

クライアント側の配列バッファにデータを変換することは可能ですか? – Kira

関連する問題