4

任何人都可以帮助我,因为我被困在本地磁盘中创建扩展名(比如.csv)的文件(临时),我尝试使用 ActiveX 对象,但它仅在 Internet Explorer 中工作正常,当我尝试使用其他浏览器时出错. 通过谷歌搜索,我知道 ActiveX 仅在 IE 中有效,因此在不同浏览器中尝试时会产生错误。

    var fso, f1;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f1 = fso.GetFile("c:\\test.txt");
    alert(f1);

任何人都可以向我推荐一个非常有用的替代方案。

4

2 回答 2

3

您遇到的问题是 ECMAScript (JavaScript) 的浏览器实现不允许您写入客户端的磁盘。微软对 JavaScript 进行了逆向工程,并将其命名为JScript。虽然基础相同,但 MS 添加了那些 ActiveX 对象和一个编译器(可以编译 JScript,是的)。

简而言之,JScript 不仅可以用于浏览器任务,因此 MS 提供了 ActiveX 对象来启用某种形式的 I/O。在 IE以外的浏览器上,您唯一能做的就是使用 HTML5 的新 DOM Storage 对象。Teemu 提供了指向该文档的链接

于 2013-02-26T10:56:31.803 回答
2

其他帖子涵盖了有关使用 Html 5 存储到本地计算机的所有信息,因此我不会对此进行详细介绍,但这仅适用于兼容 Html 5 的浏览器(尽管大多数浏览器现在都兼容 Html 5,我不知道你的项目要求)。

另一种选择是使用服务器端代码(ASP.NET、PHP 等)创建/保存文件,然后向用户提供链接,以便他们可以下载文件。您仍然可以将其保存为 .csv 文件,以便用户在下载后可以在 Excel 中打开它。

编辑:

我要做的是更改您的网络服务,以便将文件保存到光盘(更多信息:这里)。然后,不要从 Web 服务返回文件,而是返回 Url 以下载它。然后,您可以使用 JS 将用户重定向到该链接。

于 2013-02-26T11:07:26.230 回答