我有C#后端和ASP.Net MVC的经验。现在我正在对Angular 2进行第一次尝试。它需要时间,但我最喜欢它。现在我被困在一个简单的文件下载。从MVC 5下载文件到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);
}
在客户端我有这样的打字稿代码:
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);
});
}
的请求进来到服务器端。阵列被下载。我想我的问题在于客户端。谁能帮我吗?
有趣的 - 我没有[试过这个](https://templth.wordpress。com/2014/11/21/handle-downloads-with-angular /)与[FileSaver.js](https://github.com/eligrey/FileSaver.js)。请注意'arraybuffer'。 Hth ... – EdSF
是否有一个原因,你不能只使用一个普通的旧链接的文件?这可能是最简单的。 – Casey
我知道,我真的很想,但文件不在磁盘上。它们存储在后端存储中,所以我实际上将它们视为流。 –