使用webApi和angularjs的间接下载链接



我使用WebApi(C#(创建了一个间接下载链接,使用以下代码:

WebApi代码:

var file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
var httpResponseMessage = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(file)
};
httpResponseMessage.Content.Headers.Add("x-filename", fileName);
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
httpResponseMessage.Content.Headers.ContentDisposition = 
new ContentDispositionHeaderValue("attachment") { FileName = fileName };
return httpResponseMessage;

AngularJs代码:

var response = mainService.DownloadFile('api/download/file?id=1'); // $http get
response.then(function (resp) {
// Do Nothing                      
}, function (err) {
console.log(err.message);
});

当下载管理器安装在系统上(类似IDM(时,一切都正常工作。

但没有下载管理器浏览器不显示下载对话框。Chrome和FireFox 中都没有

我选中了"检查元素"中的"网络"选项卡。我的请求返回了收到的200个http代码和数据,但浏览器没有显示任何开始下载的对话框。

你能帮我吗?

您可以使用角度文件保护程序。

response.then(function (resp) {
var data = new Blob([resp], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(data, 'filename');                    
}, function (err) {
console.log(err.message);
})
angular
.module('fileSaverExample', ['ngFileSaver'])
.controller('ExampleCtrl', ['FileSaver', 'Blob', ExampleCtrl]);

最新更新