AngularJS-通过AJAX下载文件

安妮·安东尼(Anish Antony)

我创建了一个angular js程序,用于从服务器下载文件,这里遵循代码

HTML代码

<a download="fullList.csv" ng-href="{{ fullListUrl }}" type="button" class="btn btn-success btn-xs exec-batch"  ng-click="exportCSVBulk(batchExec)">
          <span class="glyphicon glyphicon-ok"></span> EXPORT AS CSV
</a>

AngularJS控制器

$scope.exportCSVBulk=function(){
 var page = "../importExportService/exportBulkCSV/"+batchExec.id;
 $http.get(page).success(function(response) {
 $scope.fullListUrl = 'data:text/csv;charset=utf-8,' + escape(response); 
});
}

在这里,我正在做的是当用户单击EXPORT AS CSV链接时exportCSVBulk触发该函数,并从该函数中设置url值(fullListUrl)。但这是一个ajax请求,因此,当用户单击URL链接时,响应时间会变得有点长,导致URL无法正确重定向。是否可以解决此问题?还是有其他解决方法?

尼迪什·克里希南

通过Ajax下载.pdf,.xls,.xlsx等文件时,我也遇到了类似的问题。

这是我们无法通过Ajax下载文件的事实,即使我想出了一种通过Ajax下载文件的解决方案。

您可以使用jquery.fileDownload-用于Ajax的jQuery文件下载插件,具有功能丰富的文件下载功能。

示范工作

服务器端

我在服务器端使用Spring

@RequestMapping(value = "exportXLS", method = RequestMethod.POST, produces = APP_JSON)
@ResponseBody
public void getCSV(final HttpServletResponse response, @RequestParam(value = "empId", required = true) final String empId) throws IOException, Exception
{
    final byte[] csv = ExportXLSUtil.getFileBytes(empId); // get the file bytes
    final OutputStream output = getOutputStream(response);
    response.setHeader("Content-Disposition", "attachment; filename=documents_" + new DateTime() + ".xls");
    response.setContentType(CONTENT_TYPE);
    response.setContentLength(csv.length);
    write(output, csv);
}

客户端

在客户端,我正在使用AngularJS

$downloadXLS = function(id)
{
    $.fileDownload('/user/exportXLS', 
    {
        httpMethod : "POST",
        data : {
            empId : id
        }
    }).done(function(e, response)
    {
     // success
    }).fail(function(e, response)
    {
     // failure
    });
}

下载链接 -jquery.fileDownload.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS-通过AJAX下载文件

来自分类Dev

使用AngularJS下载文件

来自分类Dev

通过Ajax下载文件

来自分类Dev

如何使用angularjs下载文件?

来自分类Dev

AngularJS应用程序未下载文件

来自分类Dev

AngularJS-从base64下载文件

来自分类Dev

使用angularjs从服务器下载文件

来自分类Dev

使用PhoneGap下载文件并在AngularJS中使用

来自分类Dev

angularjs nodejs从apache http服务器下载文件

来自分类Dev

通过ajax打开FileStreamResult(作为下载文件)

来自分类Dev

通过Yii下载文件

来自分类Dev

从AngularJS的服务器下载文件时如何更改文件名

来自分类Dev

通过内置下载服务下载文件

来自分类常见问题

使用AngularJS从ASP.NET Web API方法下载文件

来自分类Dev

尝试使用angularJS和C#WebAPI从服务器下载文件

来自分类Dev

是否可以使用angularjs强制在浏览器中下载文件?

来自分类Dev

如何使用AngularJS根据生成的字符串下载文本文件?

来自分类Dev

PDFSharp通过文件流下载文件

来自分类Dev

使用Python通过Internet下载文件

来自分类Dev

通过Cordova中的FileTransfer下载文件

来自分类Dev

使用Python通过SSH下载文件

来自分类Dev

如何通过Meteor下载文件?

来自分类Dev

通过FTP NOAA下载文件

来自分类Dev

从Django通过Axios下载文件

来自分类Dev

通过WebApi下载文件返回JSON

来自分类Dev

如何通过HTTP下载文件?

来自分类Dev

Firefox:通过拖放下载文件

来自分类Dev

通过Cordova中的FileTransfer下载文件

来自分类Dev

Firefox:通过拖放下载文件