【问题标题】:Angular File Saver in spring rest service春季休息服务中的Angular File Saver
【发布时间】:2016-11-13 20:57:23
【问题描述】:

我正在尝试像此示例https://github.com/alferov/angular-file-saver 那样实现 FileSaver.js 以通过 Spring Boot 应用程序下载生成的文件,我有将文件作为字节数组数据返回的休息服务。

@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]  

谁能帮我用 angular FileSaver.js 库保存生成的文件?

【问题讨论】:

    标签: javascript angularjs spring filesaver.js


    【解决方案1】:

    我已经通过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);
                 }
              }); 
    

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2016-07-25
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多