2016-09-16 4 views
1

webapi/angularjs 응용 프로그램에서 closedXml Excel 파일을 다운로드하려고합니다. 사용하여 클라이언트에 저장 한 후webapi 및 angularjs를 사용하여 파일 다운로드

HttpResponseMessage result = new HttpResponseMessage(); 
result = Request.CreateResponse(HttpStatusCode.OK); 
MemoryStream stream = GetStream(workbook); 
result.Content = new StreamContent(stream); 
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); 
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
{ 
    FileName = "Download.xlsx" 
}; 
return result; 

과 :

내가 사용하여 서버에 webapi 컨트롤러에서 데이터를 반환하고 있습니다

$scope.openExcel = function (data, status, headers, deferred) { 
     var type = headers('Content-Type'); 
     var disposition = headers('Content-Disposition'); 
     if (disposition) { 
      var match = disposition.match(/.*filename=\"?([^;\"]+)\"?.*/); 
      if (match[1]) 
       defaultFileName = match[1]; 
     } 
     defaultFileName = defaultFileName.replace(/[<>:"\/\\|?*]+/g, '_'); 
     var blob = new Blob([data], { type: type }); 

     saveAs(blob, defaultFileName); 

엑셀 파일이 다른에 말한다 형식으로 확장명을 지정한 다음 제대로 열리지 않습니다.

I가 작업 프로젝트에

답변

0

, 나는 파일에 대한 컨트롤러 (아닌 ApiController) 각도에서 다음

public class FilesController : Controller 
{ 
    public FileResult GetFile(/*params*/) 
    { 
     // get fileBytes 
     var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     return base.File(fileBytes, contentType, "Download.xlsx"); 
    } 
} 

및을,이

$window.open("/Files/GetFile/" /*+ params*/); 
같은 파일을 엽니 다
관련 문제