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

33 浏览
0 Comments

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

在我的Angular JS项目中,我有一个锚点标签,当点击时会向WebAPI方法发出HTTP GET请求,该方法返回一个文件。

现在,我希望一旦请求成功,文件就会下载到用户的计算机上。我该如何做?

锚点标签:

下载图片

AngularJS:

$scope.getthefile = function () {        
    $http({
        method: 'GET',
        cache: false,
        url: $scope.appPath + 'CourseRegConfirm/getfile',            
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        }
    }).success(function (data, status) {
        console.log(data); // 如果文件是文本文件,则显示文本数据,如果是图像,则显示二进制数据            
        // 在这里该写什么来下载我从WebAPI方法收到的文件?
    }).error(function (data, status) {
        // ...
    });
}

我的WebAPI方法:

[Authorize]
[Route("getfile")]
public HttpResponseMessage GetTestFile()
{
    HttpResponseMessage result = null;
    var localFilePath = HttpContext.Current.Server.MapPath("~/timetable.jpg");
    if (!File.Exists(localFilePath))
    {
        result = Request.CreateResponse(HttpStatusCode.Gone);
    }
    else
    {
        // 将文件返回给客户端
        result = Request.CreateResponse(HttpStatusCode.OK);
        result.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
        result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
        result.Content.Headers.ContentDisposition.FileName = "SampleImg";                
    }
    return result;
}

0