Asp.net mvc 使用angular 2(客户端)mvc api(服务器)下载文件

Asp.net mvc 使用angular 2(客户端)mvc api(服务器)下载文件,asp.net-mvc,file,angular,download,Asp.net Mvc,File,Angular,Download,我需要帮助。 我必须用angular 2下载文件 在服务器端,我有以下方法 [HttpGet] public HttpResponseMessage Download(int id) { var url = @"\\\\srv\\temp\\201589.zip" var fileInfo = new FileInfo(url); using (MemoryStream ms = new MemoryStream()) {

我需要帮助。 我必须用angular 2下载文件

在服务器端,我有以下方法

[HttpGet]
  public HttpResponseMessage Download(int id)
    {
      var url = @"\\\\srv\\temp\\201589.zip"
      var fileInfo = new FileInfo(url);
      using (MemoryStream ms = new MemoryStream())
      {
         using (FileStream file = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read))
         {
            byte[] bytes = new byte[file.Length];
            file.Read(bytes, 0, (int)file.Length);
            ms.Write(bytes, 0, (int)file.Length);

            HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
            httpResponseMessage.Content = new ByteArrayContent(bytes.ToArray());
            httpResponseMessage.Content.Headers.Add("x-filename", fileInfo.FullName);
            httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            httpResponseMessage.Content.Headers.ContentDisposition.FileName = fileInfo.FullName;
            httpResponseMessage.StatusCode = HttpStatusCode.OK;

            return httpResponseMessage;
           }
           return null;
        }
    }
要在同一窗口中卸载文件,以便用户在浏览器的底部栏(而不是在新窗口或选项卡中)看到文件,我应该在客户端做什么


谢谢你

最终我创建了一个共享组件,其中隐藏了一个获取src的iframe,因此文件将向下隐藏…

如果只添加
,而不添加任何js代码,会发生什么。它对我有效,我的控制器返回:
var result=newhttpresponsemessage(HttpStatusCode.OK){Content=newstreamcontent(myStream)};result.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/八位字节流”);返回结果尝试此
,并在angular component中使用参数创建正确的url,或者如果您将url作为对象的属性,则可以使用
,但下载将在另一个选项卡/窗口中否?在我的情况下,它在同一个窗口中,在哪个浏览器中?在我的例子中,下载是在另一个选项卡中打开的
  let params = new URLSearchParams();

  params.append("id", 1);

  this.http.get("serverUrl/Download", {search: params}).subscribe((data: any) => {});