【问题标题】:"Save As" dialog before download下载前的“另存为”对话框
【发布时间】:2018-05-22 12:30:07
【问题描述】:

我在控制器中有一个下载配置的功能:

public FileStreamResult SaveData()
{
    var toJson = JsonConvert.SerializeObject(this.GetData());
    var byteArray = System.Text.Encoding.ASCII.GetBytes(toJson);
    var stream = new MemoryStream(byteArray);
    string fileName = "Configuration.json";
    this.GetData().Save = false;
    return new FileStreamResult(stream, "text/html")
    {
        FileDownloadName = fName
    };
}

它工作正常,但唯一的问题是它会自动下载文件。我想为用户提供更新名称和设置下载位置的可能性,即我希望在下载之前弹出一个“另存为”对话框。

我查看了多个来源,但找不到适用的内容。任何人都可以建议,应该怎么做?

提前致谢。

【问题讨论】:

  • 听起来更像是浏览器首选项设置,您无法通过代码进行控制。例如,在 Chrome 中,我相信默认设置是自动下载,您(作为用户)可以更改设置以提示另存为。所以我想问题是:你在哪些浏览器上试过这个?您是否尝试过多种浏览器?
  • 完全同意@musefan 关于这一点。我前段时间看过它,不幸的是,另存为对话框是一个浏览器实现,您无法控制。
  • @musefan,谢谢。我通过 Chrome 和 Mozilla 尝试过,它会打开一个弹出窗口,询问是否保存或打开,但无法更改文件名

标签: c# asp.net-mvc filestream filestreamresult


【解决方案1】:

不同的浏览器在“另存为”对话框的显示方面表现不同。进行任何控制的唯一方法是不向浏览器提供有关文件的数据类型或名称的提示。在这些情况下,浏览器别无选择,只能向用户询问文件名。

将“text/html”替换为“application/octet-stream”。这表示“这是一堆字节,但我不知道它们代表什么”。

删除FileDownloadName。如果浏览器没有名字,它需要一个名字。

您可能需要执行上述一项或两项操作,具体取决于您关心的浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多