WebAPI und angular JS Excel-Datei download - Datei ist beschädigt

Ich bin die Generierung einer Excel-Datei in meine WebAPI. Ich "speichern" in einen memorystream und dann die Reaktion wie folgt :

var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(ms) };

            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = projectName + ".xlsx"
            };
           //ms.Close();
            return result;

Sieht es aus wie die server-Seite arbeiten korrekt. Wenn ich Schreibe, dass memorystream in den filestream, die Datei ist erstellt und kann ohne Probleme öffnen.

Auf der eckigen Seite, wie kann ich die Datei neu anlegen, wenn Sie auf eine Schaltfläche klicken?

Habe ich versucht, etwas wie dieses :

$scope.exportQuotas = function (projectName) {
    homeService.GetQuotas(projectName, $routeParams.token, $scope.selection).then(
             function (data) {
                 var dataUrl = 'data:application/octet-stream;' + data
                 var link = document.createElement('a');
                 angular.element(link)
                   .attr('href', dataUrl)
                   .attr('download', "bl.xlsx")
                   .attr('target', '_blank')
                 link.click();
             })
}

Wird die Datei erstellt, aber wenn ich versuchte, es zu öffnen, es ist beschädigt... ich habe versucht, die änderung der Daten-Typ vnd.ms-excel-im Winkel-aber es hat nicht funktioniert...
Wie kann ich die Datei heruntergeladen werden, die auf klicken Sie auf?

BEARBEITEN
Nach Jorg Antwort, ich habe versucht, die folgenden :
Was die api gibt ist :

Status Code: 200
Pragma: no-cache
Date: Tue, 02 Sep 2014 02:00:24 GMT
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Type: application/binary
Access-Control-Allow-Origin: *
Cache-Control: no-cache
X-SourceFiles: =?UTF-8?B?        QzpcVXNlcnNcdHJpaGFuaC5waGFtXFByb2plY3RzXFF1b3RhUXVlcnlcUXVvdGFRdWVyeUFQSVxhcGlccXVvdGFcR2V0?=
Content-Disposition: attachment; filename=O14Y0129AUG.xlsx
Content-Length: 13347
Expires: -1

Aus, was ich sehen kann, sieht es richtig.

Client-seitig :

                 var file = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' });
                 var fileURL = URL.createObjectURL(file);
                 window.open(fileURL);

Einer excel-Datei wird erstellt aber es ist immer noch beschädigt...

Dank

  • Ich habe mir funktioniert dies so: stackoverflow.com/questions/22447952/...
  • Es hat nicht funktioniert für mich aber nicht 🙁 die Datei beschädigt ist... auch als metionned, das mit dem Namen ist komisch...
  • ist data base64?
InformationsquelleAutor tri | 2014-09-02
Schreibe einen Kommentar