【发布时间】:2019-03-01 07:44:15
【问题描述】:
我想强制将我的流中的文件下载给用户。我想将文件保存在用户磁盘上,不允许另存为功能,因为我们不希望用户在下载时更改文件名。这是我的代码,在浏览器设置的基础上运行良好
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ContentType = "application/pdf;";
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", data.Length.ToString());
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=abc.pdf");
//System.Web.HttpContext.Current.Response.OutputStream.Write(downloadData[0].data, 0, downloadData[0].data.Length);
System.Web.HttpContext.Current.Response.BinaryWrite(data);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
我知道
Ask where to save each file before downloading
是浏览器设置。是否有具体的解决方案可以禁用此功能并在每个浏览器中强制下载?
【问题讨论】:
-
简单的答案是否定的。至少用户可以在文件保存后移动和/或重命名文件。它也是一项防止这种情况发生的安全功能。
-
除非您愿意编写自己的浏览器,否则这是不可能的。当您返回 File(StreamResult) - 浏览器会完成其余的工作。就像@PeterSmith 所说,一旦完成下载,他们就可以更改名称。您将无法执行任何操作。
-
暂时忽略这是不可能的,如果您的“神圣命名”文件名恰好与他们当前用来存储的文件相同,那么糟糕的用户体验会是什么样子他们的帐户在哪里?
-
一个简单的问题:为什么???
-
我知道这是不可能的。客户要求如此,所以我不得不考虑一下。
标签: c# asp.net asp.net-mvc file pdf