【发布时间】:2017-02-03 15:15:10
【问题描述】:
我有 C# 后端和 ASP.Net MVC 方面的经验。现在我正在对 Angular 2 进行第一次尝试。这需要时间,但我最喜欢它。现在我被困在一个简单的文件下载上。
我已经阅读了我在 Stackoverflow 上找到的所有示例,但我的示例仍然无法正常工作。
在服务器端我有这个 C# 代码:
public ActionResult DownloadPicture(long id)
{
var bytes = System.IO.File.ReadAllBytes("images\dummy.jpg");
return GetAttachement(bytes, "DummyFile.jpg");
}
private ActionResult GetAttachement(byte[] bytes, string fileName)
{
var contentType = MimeMapping.GetMimeMapping(fileName);
var contentDisposition = new System.Net.Mime.ContentDisposition
{
FileName = fileName,
Inline = true
};
Response.AppendHeader("Content-Disposition", contentDisposition.ToString());
return File(bytes, contentType);
}
在客户端我有这个 Typescript 代码:
public pictureDownload(id: number): void {
let options = new RequestOptions({ search: new URLSearchParams("id=" + id) });
this.http.get(this.urlPictureDownload, options).subscribe((data: any) => {
// var blob = new Blob([data._body], { type: "image/jpeg" });
// var url = window.URL.createObjectURL(blob);
// window.open(url);
});
}
请求正在进入服务器端。阵列已下载。我想我的问题出在客户端。谁能帮帮我?
【问题讨论】:
-
有趣 - 我没有 tried this 和 FileSaver.js。注意
arraybuffer。嗯…… -
您是否有理由不能只对文件使用普通的旧链接?这可能是最简单的。
-
我知道,我真的很想这样做,但文件不在磁盘上。它们存储在后端存储中,因此我实际上将它们作为流保存。
-
感谢 EsDF 提供链接。它真的很有帮助。我仍然有一些关于下载的问题。请参阅上面的更新。
标签: c# asp.net asp.net-mvc angular