2015-06-02 2 views
0

Я использую jax-ws на стороне сервера и angularjs на стороне клиента. Я пытаюсь загрузить отправку файла xls со стороны сервера. В стороне сервера я использую этот код:Загрузить файл xls angular jax-rs

@GET 
     @Path("/exportemployeexls") 
     @Produces("application/vnd.ms-excel") 
     @PermitAll 
     public Response exportAllEmployeeOnXLSFile(){ 
     ....... 
     File employeeFile = new File("C://employee.xls"); 
     ResponseBuilder response = Response.ok((Object) employeeFile); 
      response.header("Content-Disposition", 
        "attachment; filename=employeeFile.xls"); 
     return response.build(); 
} 

И у меня есть следующий угловой код, чтобы получить файл отослано на стороне сервера:

Мой HTML-код:

<a href ng-click="actionTsunamiXls()" style="font-size: 80%;"> 
<img style="max-width:15px;" src="/img/csv.jpg"/>Tsunami Xls 
</a> 

Мой контролер:

$scope.actionTsunamiXls = function() { 
console.info("Export XLS"); 
NavService.getTsunamiXls(function (response) { 
$timeout(function() { 
var hiddenElement = document.createElement('a'); 
      hiddenElement.href = 'data:attachment/xls,' + encodeURIComponent(response); 
      hiddenElement.download = 'result.xls'; 
      hiddenElement.click(); 
}, 200); 
}); 

};

И мой код услуги:

.....

service.getTsunamiXls = function (callback) { 
$http.get(url + ':' + port + '/' + context + '/rest-ws/team/exportemployeexls') 
.success(function (response) { 
callback(response); 
}); 

Проблема заключается в том, когда я нажимаю на кнопку, чтобы Dowload файл XLS я получаю файл .xls, не очень хорошо отформатированный.

varibale реакция имеет неверное значение, как это:

ࡱࡱࡱࡱࡱࡱࡱࡱ ࡱ ࡱ ` "" @ @ ......

Обратите внимание, что когда я использую URL-адрес «http://localhost:8090/myapp/rest-ws/team/exportemployeexls» прямо в браузере, я получаю хорошо сформированный xls.

У кого-нибудь есть идея о том, как продать этот товар и загрузить файл xls с помощью угловых и jax-rs ?? };

ответ

1

Я решил проблему, применяя нижеследующее решение.

В моей службы я вернуть URL, что позволяет получить XLS с сервера

стороне.

service.getTsunamiXls = function() { 
      return url + ':' + port + '/' + context + '/rest-ws/team/exportemployeexls' 
     }; 

и в моем контроллере я называю мою службу и я использую window.open Javascript функции:

$scope.actionEmployeeXls = function() { 
     console.info("Export XLS"); 
     $window.open(NavService.getTsunamiXls()); 
    }; 

и, наконец, при нажатии на кнопке моей халявной, что CALS actionEmployeeXls я получить мой файл XLS.

Смежные вопросы