如何在文件下载时提示“另存为”对话框



下载文件时,我试图提示另存为对话框,但我得到的是,或者文件正在浏览器上打开,或者下载时没有提示保存位置和保存名称。

我的控制器代码:

public FileContentResult Save(string text)
{         
    string contentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition", "attachment; filename=outname.txt"); //EDIT
    return File(Encoding.ASCII.GetBytes(text), contentType, "outname.txt");
}

我尝试了FileResult/ActionResult、应用程序/文本等的不同变体。

客户代码:

<html>
<body>
<script>
    function submitForm() {
        txt = document.getElementById("textFld");   
        form = document.getElementById("submitForm");   
        input = document.getElementById("messages").outerHTML;   
        txt.value = input;   
        form.submit();
    };
</script>
<table id="messages"> ... </table>
<form action="Home/Save" method="POST" id="submitForm">
    <input type="text" name="text" id="textFld">
</form>
<input type="button" id="submitBtn" onclick="submitForm()">
<script>
    subm = document.getElementById("submitBtn");
    subm.click();
</script>
</body>
</html>

原始答案

您需要在响应中将Content-Disposition标头设置为attachment,以指示浏览器保存文件。

新答案

看起来这是一个已知的Chrome问题:https://code.google.com/p/chromium/issues/detail?id=380652

最新更新