2016-07-11 4 views
1

봄 부팅 응용 프로그램에서 생성 된 파일을 다운로드하려면이 예제 https://github.com/alferov/angular-file-saver과 같은 FileSaver.js를 구현하려고하는데 파일을 바이트 배열 데이터로 반환하는 휴식 서비스가 있습니다.봄 휴식 서비스의 각도 파일 보호기

@RequestMapping(value = "/generateReport/{reportId}/{parameters}", 
     method = RequestMethod.GET, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
    @Timed 
    public byte[] generateReport(@PathVariable("reportId") String reportId, 
           @PathVariable("parameters") String parameters 
           ) { 

     byte[] bFile; 
     //some code 

     return bFile; 
    } 

각도 서비스

'generateReport': { 
      method: 'GET', 
      responseType: 'arraybuffer' , 
      url: 'adap_report/api/generateReport/:reportId/:parameters', 
      transformResponse: function (data) { 
       if (data) { 
        data = angular.fromJson(data); 
       } 
       return data; 
       } 
     }, 

작품 및 파일 다운로드하지만 보호기 AngularJS와 컨트롤러

vm.generateReport = function() { 
     Report.generateReport({reportId:entity.id,parameters:angular.toJson(vm.parameterList)}, function(result) { 
     var data = new Blob([result], { type: 'application/octet-stream' }); 
     FileSaver.saveAs(data, 'text.txt'); 
     }); 
    }; 

파일 내용은, 난 그냥이 내용

[object Object] 
로 파일을 가져 잘못

칼슘 n 누군가 FileSaver.js 라이브러리로 생성 된 파일을 저장하는 것을 도와 주시겠습니까?

답변

0

나는 HTTP하여 해결 한

$http.get('/adap_report/api/generateReport/'+entity.id+'/'+angular.toJson(vm.parameterList), {responseType: 'arraybuffer'}) 
      .success(function (data) { 
       console.log(data) 

       if(entity.reportoutputtypecode=="PDF"){ 
        var blobData = new Blob([data], {type: 'application/pdf'}); 
        var fileURL = URL.createObjectURL(blobData); 
        window.open(fileURL);    
       }else{ 
       var blobData = new Blob([data], {type: 'application/'+entity.reportoutputtypecode}); 
       FileSaver.saveAs(blobData, 'jasper-file.'+entity.reportoutputtypecode); 
      } 
      });