在浏览器中强制保存对话框

时间:2018-06-29 11:17:10

标签: asp.net asp.net-mvc asp.net-mvc-4

我有一个功能,可以在其中下载配置。我已经写了一个方法,它可以正常工作并满足我的要求。唯一的问题是用户无法更改文件名和指定目的地。

我尝试了SO中的多个选项,例如Stream,FileResult,ActionResult,Response,但是保存对话框根本没有出现。

以下是函数:

public void DownloadParameters()
    {
        var byteArray = System.Text.Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(this.GetParameters()));
        var stream = new MemoryStream(byteArray);
        string fileName = "tmp.file";

        System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
        response.ClearContent();
        response.Clear();
        response.ContentType = "text/html";
        response.AddHeader("content-disposition", "attachment; filename="+fileName+";");
        response.BinaryWrite(byteArray);
        response.Flush();
        response.End();
    }

还有其他方法可以实现这一目标吗?任何建议表示赞赏

1 个答案:

答案 0 :(得分:0)

可能是由于内容类型所致。

您使用text / html的原因吗?

如果更改为更合适的内容类型,即浏览器无法原生处理的内容,则应显示“保存”对话框。

由于内容显然是json,所以更合适的名称可能是“ config.json”,内容类型应该是“ application / json”。

如果使用该选项,则会出现“保存”对话框。