【发布时间】:2016-05-03 13:38:39
【问题描述】:
我正在尝试执行以下操作:
- 用户填写表格并将其以 .JSON 格式发送到服务器
- 使用该表单,服务器会生成一些 .CSV 文件并将它们全部放在一个 .ZIP 文件中。
- 服务器发送 .ZIP 文件,用户下载。
经过一番研究,我写了这段代码:
我的控制器:
[HttpPost]
[Route("routeToMyAPI")]
public HttpResponseMessage Process(Form form)
{
var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(<streamToMyGeneratedZipFile>)
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "fileName.zip"
};
return result;
}
我的服务:
angular.module('app')
.factory('MyService', function ($http) {
return {
Process: function (form) {
var req = $http.post('rest/example/process', form);
return req;
}
};
});
我的控制器:
this.submit = function () {
var Form = {};
var formPost = MyService.Process(Form);
formPost.then(function (data) {
var a = document.createElement('a');
var blob = new Blob([data], { 'type': "application/octet-stream" });
a.href = URL.createObjectURL(blob);
a.download = "fileName.zip";
a.click();
}, function (error) {
alert('An error occured !');
});
};
我有第 1 部分和第 2 部分工作,但我没有找到调用我的 ASP API 来下载 .ZIP 文件的方法。
当我调用我的控制器的提交方法时,我有一个 fileName.zip,它已下载到我的电脑上,但当我尝试打开它时,Windows 告诉我它不是一个有效的存档。
我做错了什么?我是 angularjs 和 ASP 的新手,欢迎任何帮助。
提前致谢。
【问题讨论】:
标签: asp.net angularjs api http download