如何使用angularjs webapi

时间:2016-06-16 06:38:37

标签: angularjs asp.net-web-api typescript

我正在使用angular typescript和webapi开发单页面应用程序。我正在尝试从我的网站下载一些.exe文件。 我在页面上有一个下载按钮,当用户点击它时,浏览应该提示保存位置,并且.exe​​文件应该下载到他的本地机器。

请分享您的想法。

谢谢。

哈里克。

2 个答案:

答案 0 :(得分:0)

只需创建链接<a href="path_to_exe_file">Download</a>

即可

答案 1 :(得分:0)

好吧,晚了3年,但是在这里发布答案以供将来参考。

首先,在您的ASP.NET Web API控制器中:-

[Route("downloadFile")]
[HttpGet]
public HttpResponseMessage DownloadFile()
{
    HttpResponseMessage res = null;
    try
    {
        res = new HttpResponseMessage(HttpStatusCode.OK);

        // if you are serving file from App_Data folder, otherwise set your path
        string path = HttpContext.Current.Server.MapPath("~/App_Data");

        res.Content = new StreamContent(new FileStream($"{path}\\app.exe", FileMode.Open, FileAccess.Read));

        res.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");

        res.Content.Headers.ContentDisposition.FileName = "app.exe";

        res.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/exe");

        return res;
    }
    catch(Exception ex)
    {
        return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
    }
}

如您所见,向客户端发送.exe文件的方法与发送.txt / .pdf文件的方法完全相同。您只需要将ContentType更改为正确的类型:applicaion/XXX

然后,您可以使用HttpClient从您的角度SPA调用上述api,或者将api的网址放在href标签的a属性内:

<a href="http://localhost:XXXXX/url/to/downloadFile">Download</a>

单击此a元素将向上述url发送GET请求,然后将下载文件。