当您在网页上创建指向要下载的可执行文件的链接(例如说update.exe)时,IE7会为用户提供“运行”或“保存”选项。我不希望用户运行他们应该下载的更新文件。
是否可以在IE显示的对话框中禁用“保存”选项,甚至可以自动强制下载。
答案 0 :(得分:3)
这可能应该放在链接到的代理文件中,而不是直接链接到.exe文件。然后代理文件发送.exe文件并强制(试图说服)浏览器强制下载文件,而不是直接运行它。
HttpContext.Current.Response.Buffer = false;
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-disposition", "attachment; filename=filename.exe");
HttpContext.Current.Response.AddHeader("Content-length", contentLength);
HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary");
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.TransmitFile(filePath);
答案 1 :(得分:2)
下载行为内置于浏览器中。用户应该有选择。无论如何它有什么区别?当用户选择“运行”时,文件将下载到临时位置并执行,就像用户已下载并手动运行一样。
答案 2 :(得分:2)
执行此操作的非技术方法是以相关对话框的图像形式下载下载说明,并在保存按钮周围添加一个友好的圈子,以及一些告诉用户点击的文本保存按钮。这样就把一切都留给了用户,程序员也没有。当试图实现这样的事情时,#1问题正在验证它是否真的有效。配置上存在很多差异,在所有情况下进行测试变得不切实际,在这种情况下,任何解决方案都无法保证工作,这意味着花费的任何时间/金钱都是浪费。
此外,这意味着有一些非核心功能需要专业知识来维护。这是在寻找麻烦。
答案 3 :(得分:1)
尝试在您使用的编程语言中添加等效项:
response.setHeader(“Content-Disposition”,“attachment; filename = ...”>
从服务器提供文件时的文件。
编辑:将省略号(...)替换为您希望他们下载的文件。
编辑2:为了澄清,不要直接服务器fred.png,而是使用fred.php并在该php文件中生成自定义标题信息(包括Content-Disposition)并传递它,加上fred.png内容,回到客户端。
答案 4 :(得分:0)
我只是在猜测,但您可以将内容类型标题字段强制为默认值。我见过“application / x-msdownload”可能会做你想要的。
答案 5 :(得分:0)
我能想到的唯一方法是通过组策略,如果它为此定义了一个选项。如果您可以控制最终用户计算机,那么这只是一个可行的解决方案,因此在Intranet /域加入的环境中。
作为标准,您无法在IE / HTM / HTTP中使用任何内容来控制呈现给最终用户的UI。您可以考虑一些替代解决方案/解决方案:
两个选项几乎相同,但是一个需要一个ActiveX而且只是IE浏览器,但另一个不是。
答案 6 :(得分:0)
您可以将文件重命名为update.exe.safe之类的文件,但是您遇到的问题是让用户正确地重命名该文件,以便他们可以双击它并发生某些事情。
答案 7 :(得分:0)
不确定为什么你不希望用户运行它,但也许你可以把exe放在一个Zip文件中:它是一种熟悉的格式,大多数用户知道如果需要的话如何提取文件。如果是自动更新/安装(使用选项运行?),我想你可以在运行之前解压缩。
答案 8 :(得分:0)
与Mark S. Rasmussen的回应相似。
您可能需要的是内容处置标头。这允许您提示用户保存文件。说完之后,这取决于用户的浏览器。