javascript - Spring Rest 服务中的 Angular File Saver

标签 javascript angularjs spring filesaver.js

我正在尝试像这个例子那样实现 FileSaver.js https://github.com/alferov/angular-file-saver要通过 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;
     }

Angular 服务

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

Angularjs Controller

 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 库保存生成的文件吗?

最佳答案

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

关于javascript - Spring Rest 服务中的 Angular File Saver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38314948/

相关文章:

javascript - 如何自动调整内容字体大小以适应其跨度

javascript - 无法使用javascript保存数据

javascript - jqPlot 折线图未绘制到 div 边缘

javascript - 在 fabric.js 中用颜色填充图像

java - 使用 Java 反射返回所有 null

javascript - 在我的 View 中重复相同的图表,并且在页面刷新时,图表发生变化

html - 实现页脚底部

JavaScript:从文化设置中获取日期格式

java - Spring Boot中使用HttpSession对象的JUnit测试方法

java - 如何使用 AnnotationConfigWebApplicationContext 运行 SpringApplication?