Asp.net mvc 使用angular 2(客户端)mvc api(服务器)下载文件
我需要帮助。 我必须用angular 2下载文件 在服务器端,我有以下方法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()) {
[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) => {});