2017-01-26 2 views
0

Ich habe Web-Anwendung mit eckigen js und WEB-API mit asp.net implementiert. Dort habe ich ContentDisposition verwendet, um den Dateinamen wie unten WEB API-Controller-Methode zurückzugeben.Dateidownload in angular js SPA mit ASP.net Web API nicht richtig funktioniert?

aber wenn versucht wird, auf x-Dateiname von der Client-Seite zuzugreifen, existiert es dort nicht. Winkelcode ist unten gezeigt.

 $http({ 
      method: 'GET', 
      url: common.serviceUrl(config.apiServices.usermanuals), 
      params: { manualId: manualId }, 
      responseType: 'arraybuffer' 
     }).success(function (data, status, headers, config) { 
      headers = headers(); 
      //var test = headers('Content-Disposition'); 
      var filename = headers['x-filename']; 
      var contentType = headers['content-type']; 

      var linkElement = document.createElement('a'); 
      try { 
       var blob = new Blob([data], { type: contentType }); 
       var url = window.URL.createObjectURL(blob); 

       linkElement.setAttribute('href', url); 
       linkElement.setAttribute("download", filename); 

       var clickEvent = new MouseEvent("click", { 
        "view": window, 
        "bubbles": true, 
        "cancelable": false 
       }); 
       linkElement.dispatchEvent(clickEvent); 
      } catch (ex) { 
       console.log(ex); 
      } 
     }).error(function (data) { 
      console.log(data); 
     }); 

Rückkehr Header unten gezeigt

enter image description here

Dateiname wird undefined Wie ich ContentDisposition von hier aus zugreifen können. pls help

Dank

+0

Seien Sie sicher, 'x-filename' in den [Access-Control-Expose-Headers] enthalten (https://developer.mozilla.org/en- US/docs/Web/HTTP/Kopfzeilen/Access-Control-Expose-Header). – georgeawg

+0

@georgeawg Danke – Wella

Antwort

0

unter Code in Controller hinzugefügt und es löste das Problem.

exposedHeaders: "x-Dateiname"

[EnableCors(origins: "*", headers: "*", methods: "*", exposedHeaders: "x-filename")] 
Verwandte Themen