下载动态创建的zip档案的角度解决方案

Angular solution to downloading dynamically created zip archive

本文关键字:解决方案 档案 zip 动态 创建 下载      更新时间:2023-09-26

使用AngularJS下载动态创建的zip文件的最佳方式是什么?我可以使用window.open点击URL,但这似乎很不符合角度,我可以使用iframe,但我不知道如何在我的RestService中获得它的引用。

什么是一个好的Angular实现来允许下载动态创建的文件?

// Current solution
RestService.createInstance( data )
    .then(function( id) {
        //return RestService.generateArchive( id );
        var url = location.href;
        if( url.indexOf('#') != -1 ) { url = url.substring(0, url.indexOf('#')); }
        url += '?ID=' + id;
        window.open( url );
    })
    .then(function( success ) {
        // Obviously won't work due to security
    });

此外,您将如何检查响应是否被拒绝?看起来你做不到,但以防万一。

小样本:

Html:

<iframe ng-src="{{url}}" style="display:none"/>

JS:

$scope.url = 'google.com';
RestService.createInstance( data )
    .then(function( id) {
        //return RestService.generateArchive( id );
        var url = location.href;
        if( url.indexOf('#') != -1 ) { url = url.substring(0, url.indexOf('#')); }
        url += '?ID=' + id;
        $scope.url = $sce.trustAsResourceUrl(url);
    })

这应该工作一些备注:

  • 当然,别忘了注入$sce
  • 如果你从同一个网址多次下载,请在下载之间将网址重置为类似谷歌的内容