我试图在下载文件时提示“另存为”对话框,但我得到的是,或者文件正在浏览器上打开,或者下载文件时没有提示保存位置和保存名称。
我的控制器的代码:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)