我正在使用angular typescript和webapi开发单页面应用程序。我正在尝试从我的网站下载一些.exe文件。 我在页面上有一个下载按钮,当用户点击它时,浏览应该提示保存位置,并且.exe文件应该下载到他的本地机器。
请分享您的想法。
谢谢。
哈里克。
答案 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请求,然后将下载文件。