C# 使用Asp.Net MVC下载的Angular2文件始终命名为';下载.xlsx';-我怎么改名字?

C# 使用Asp.Net MVC下载的Angular2文件始终命名为';下载.xlsx';-我怎么改名字?,c#,asp.net-mvc,angular,xlsx,C#,Asp.net Mvc,Angular,Xlsx,控制器方法: public FileResult FromModel(ExcelWorkBook model) { byte[] fileBytes; var reportStream = ExcelCreator.Create(model); try { fileBytes = reportStream.ToArray(); var fileName = "some_crazy_filename.xlsx"; v

控制器方法:

public FileResult FromModel(ExcelWorkBook model)
{
    byte[] fileBytes;
    var reportStream = ExcelCreator.Create(model);
    try
    {
        fileBytes = reportStream.ToArray();
        var fileName = "some_crazy_filename.xlsx";

        var encoding = System.Text.Encoding.UTF8;
        Response.Charset = encoding.WebName;
        Response.HeaderEncoding = encoding;
        Response.AppendHeader("Content-Disposition", new System.Net.Mime.ContentDisposition { FileName = fileName, Inline = true }.ToString());
        return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    }
    catch (Exception) { throw; }
    finally
    {
        reportStream.Close();
        reportStream.Dispose();
    }
}
角度2方法:

this.http.post('/Excel/FromModel', postData, { headers: headers, responseType: ResponseContentType.ArrayBuffer })
    .catch(this.handleError)
    .subscribe(x => {
        console.log(x);
        let blob = new Blob([x.arrayBuffer()], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
        fileReader.readAsDataURL(blob);
        fileReader.onloadend = function (readerEvent) {
            window.open(fileReader.result);
        };
    });

文件下载得很完美,但文件名总是download.xlsx知道我遗漏了什么吗?我觉得我错过了一些简单的事情。。。谢谢大家!

如果您只想通过
窗口保存文件,为什么还要麻烦异步下载文件呢?打开
(顺便说一句,文件名会丢失在这里)?浏览器对此仍然相当糟糕。你(可能)找不到比
窗口更好的解决方案。打开
下载URL,这样浏览器就可以获得正确的标题并将文件名应用于下载。我只想下载文件而不进行回发-我不知道如何使用Angular2和帖子来实现这一点。同步解决方案就可以了!对不起,我没有。我刚开始通过浏览器进行大规模下载,我突然想到了这个问题。有一个帖子返回了一个文件,我不得不处理一堆。在浏览器x或y上,我尝试了很多事情,无论出于何种原因,这些事情都失败了,我将post调用转换为get调用,并在一个新选项卡中打开了该死的东西。它工作正常,并且是跨浏览器兼容的。我并不是说这是唯一的解决方案,但这是我能找到的唯一可靠的解决方案。我还是不够干净。Brb,淋浴。至少我不是唯一一个:普格。。。这么简单:P如果您只想通过
窗口保存文件,为什么还要麻烦异步下载文件呢?打开
(顺便说一句,这就是您丢失文件名的地方)?浏览器对此仍然相当糟糕。你(可能)找不到比
窗口更好的解决方案。打开
下载URL,这样浏览器就可以获得正确的标题并将文件名应用于下载。我只想下载文件而不进行回发-我不知道如何使用Angular2和帖子来实现这一点。同步解决方案就可以了!对不起,我没有。我刚开始通过浏览器进行大规模下载,我突然想到了这个问题。有一个帖子返回了一个文件,我不得不处理一堆。在浏览器x或y上,我尝试了很多事情,无论出于何种原因,这些事情都失败了,我将post调用转换为get调用,并在一个新选项卡中打开了该死的东西。它工作正常,并且是跨浏览器兼容的。我并不是说这是唯一的解决方案,但这是我能找到的唯一可靠的解决方案。我还是不够干净。Brb,淋浴。至少我不是唯一一个:普格。。。很简单:P