有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript通过调用URL在浏览器中获取CSV文件

我制作了一个Java micro服务,将一个表从数据库导出到一个CSV文件中,并通过以下方式在浏览器中获取:Downloading a CSV File in Browser by using Java 它运行良好,当我调用URL时(通过在浏览器中复制和粘贴),我会在浏览器中获取文件: http://localhost:8080/api/fileDownload/2

在我调用应用程序中的URL时,我在控制台中看到:

Request URL:http://localhost:8080/api/fileDownload/2
Request Method:GET
Status Code:200 

在控制台的预览和响应中,我还有文件的内容。看起来一切都很好,但问题是我的浏览器没有自动下载文件

我的控制器:

vm.downloadFunction=function(){
    FileDownload.download.query({id:2},function(data){
    });
};

我的看法是:

 <label data-ng-click="addModule.downloadFunction()" class="btn btn-link btn-file">
                    Download <input type="button" class="hidden">
                </label>

以及服务:

voltApp.factory('FileDownload', function ($resource) {
return{
    download:  $resource('/api/fileDownload/:id', {}, {
        query: {method: 'GET', params: {id:'@id'},isArray:false},
        update:{method: 'PUT'}
    })
};

})

我做错了什么


共 (1) 个答案

  1. # 1 楼答案

    考虑使用{a1}

    例如:

    JS

    function ExampleCtrl(FileSaver, Blob) {
      var vm = this;
    
      vm.val = {
        text: 'Hey ho lets go!'
      };
    
      vm.download = function(text) {
        var data = new Blob([text], { type: 'text/plain;charset=utf-8' });
        FileSaver.saveAs(data, 'text.txt');
      };
    }
    
    angular
    
          .module('fileSaverExample', ['ngFileSaver'])
          .controller('ExampleCtrl', ['FileSaver', 'Blob', ExampleCtrl]);
    

    HTML

    <div class="wrapper" ng-controller="ExampleCtrl as vm">
      <textarea
        ng-model="vm.val.text"
        name="textarea" rows="5" cols="20">
          Hey ho let's go!
      </textarea>
      <a href="" class="btn btn-dark btn-small" ng-click="vm.download(vm.val.text)">
        Download
      </a>
    </div>