angularjs – 如何使用角度下载zip文件

我正在尝试从我的web api控制器下载zip文件.它正在返回文件,但是当我尝试打开时,我收到一个消息,zipfile无效.我已经看到关于这个的其他帖子,响应添加了responseType:’arraybuffer’.仍然不为我工作我也没有在控制台任何错误.
var model = $scope.selection;
    var res = $http.post('/api/apiZipPipeLine/',model)

    res.success(function (response,status,headers,config) {
        saveAs(new Blob([response],{ type: "application/octet-stream",responseType: 'arraybuffer' }),'reports.zip');
            notificationFactory.success();
    });

api控制器

[HttpPost]
    [ActionName("ZipFileAction")]
    public HttpResponseMessage ZipFiles([FromBody]int[] id)
    {
        if (id == null)
        {//required IDs were not provided
            throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest));
        }

        List<Document> documents = new List<Document>();
        using (var context = new ApplicationDbContext())
        {
            foreach (int NextDocument in id)
            {
                Document document = context.Documents.Find(NextDocument);

                if (document == null)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
                }

                documents.Add(document);
            }
            var streamContent = new PushStreamContent((outputStream,httpContext,transportContent) =>
            {
                try
                {
                    using (var zipFile = new ZipFile())
                    {
                        foreach (var d in documents)
                        {
                            var dt = d.DocumentDate.ToString("y").Replace('/','-').Replace(':','-');
                            string fileName = String.Format("{0}-{1}-{2}.pdf",dt,d.PipeName,d.LocationAb);
                            zipFile.AddEntry(fileName,d.DocumentUrl);
                        }
                        zipFile.Save(outputStream); //Null Reference Exception
                    }
                }

                finally
                {
                    outputStream.Close();
                }
            });
            streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            streamContent.Headers.Contentdisposition = new ContentdispositionHeaderValue("attachment");
            streamContent.Headers.Contentdisposition.FileName = "reports.zip";

            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = streamContent
            };
            return response;
        }
    }

更新

我想你将responseType设置在错误的地方,而不是这样:
$http.post('/api/apiZipPipeLine/',model)

尝试这个:

$http.post('/api/apiZipPipeLine/',model,{responseType:'arraybuffer'})

看看this answer了解更多细节.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...