2017-05-23 3 views
0

Mein Server generiert Excel-Dateien dynamisch. Ich verwende AJAX, um die dynamische Excel-Datei herunterzuladen. Im Erfolgsrückruf erhalte ich die Daten der Excel-Datei.href zum Herunterladen einer Excel-Datei

$.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) } 
     }); 

Bitte vorschlagen, wie diese Daten zu verwenden, in dem href Attribut des Anker-Tag zum Download?

Hinweis:

1) Ich brauche AJAX für Kopf Genehmigung

Antwort

1

Ihre Anfrage Verbessere dataType: "binary" und responseType: "arraybuffer" Eigenschaft hinzufügen.

$.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) } 
}); 

Dann erhalten Sie Array-Puffer, die einfach über Blob und Objekt-URL heruntergeladen werden können.

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

in Ihrem Fall:

$.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

Danke, werde ich es geben versuchen – Kira

+0

Das Problem kehrt Excel-Datei als Array-Puffer von Server. Ich habe keine Kontrolle über die Daten vom Server. Eine Drittanbieterbibliothek gibt sie direkt an den Client-Browser zurück. Ich gebe nur meine Daten an die 3rd-Party-Bibliothek – Kira

+0

ist es möglich, die Daten in Array-Puffer in Client-Seite zu konvertieren? – Kira

Verwandte Themen