是否可以通过javascript访问本地文件?

时间:2011-07-19 05:55:06

标签: javascript


    if (window.ActiveXObject) {
        try {
            var fso = new ActiveXObject("Scripting.FileSystemObject"); 
            fso.CopyFile("C:\\Program Files\\GM4IE\\scripts\\source.txt","C:\\Program Files\\GM4IE\\scripts\\target.txt", 1);
            fso = null;
            }
            catch (e) {
            alert (e.message);
            }
    }

我收到错误: “自动化服务器无法创建对象”在我创建ActiveXObject实例的行上 我知道使用javascript访问硬盘数据被认为非常糟糕,但我只是需要它 我正在使用 IE8,Greasemonkey4IE 来运行我的javascript。

谢谢你,
莫希特

** * ** * ** * 的** * ** * ** * ** * ** * 的** * ***


    function WriteFile()
    {
       var fso  = new ActiveXObject("Scripting.FileSystemObject");
       fso.CopyFile("C:\\source.txt","C:\\target.txt", 1);
    }

我将上面的代码放在一个简单的HTML页面中,它完美无缺 http://www.c-point.com/JavaScript/articles/file_access_with_JavaScript.htm
您可以在上述位置找到类似的代码 我修改了一下,很难 但是当我试图通过 GreaseMonkey4IE 运行时,它只是吐出我之前指定的相同错误。



我做过这些人,但非常感谢您的快速回复 我所做的就是:
    转到工具>互联网选项>安全>自定义级别
    在ActiveX控件和插件下,选择“启用初始化”和“脚本未标记为安全的ActiveX控件”。

3 个答案:

答案 0 :(得分:5)

使用本机JavaScript,不,通常不可能访问本地文件。使用ActiveX,Flash或Java等插件和扩展,您可以绕过此规则,通常会遇到一些困难。

对于此一般规则的某些浏览器和操作系统特定的例外情况,您可能需要查看此处:

Local file access with javascript

请注意,截至2012年底,所有主流浏览器都支持FileReader API,并提供本机JavaScript机制,用于访问用户提名的本地文件(通过{{1元素或将它们放入浏览器中)。

这仍然不能用于按名称/路径访问任意文件,如原始问题中的示例所示。

答案 1 :(得分:4)

HTML5 File API有多种方法可以访问本地文件。

window.requestFileSystem允许您请求访问文件系统。浏览器支持非常差(仅限Chrome)。

FileReader是HTML5 FileReader API,允许您以编程方式读取用户通过<input type='file' />浏览器支持选择的文件。

您应该使用flash和POST等回退到服务器以获得完整文件访问权限。

通常,阅读仲裁文件被视为“欺骗浏览器”,因此我要么必须使用安全的HTML5,ActiveX或Flash。所有这3个都需要用户权限。

答案 2 :(得分:0)

经过一些研究后我发现:

 var fso = new ActiveXObject("Scripting.FileSystemObject");
 //This line will create a xml file on local disk, C drive
 fh = fso.CreateTextFile( "C:\\fileName.xml", true);
 fh.WriteLine("this is going to be written in fileName.xml");

这就是我们如何做到的。还有其他方法。

访问本地文件系统是非常糟糕的事情,但是我们可以做到。

自动化服务器无法创建对象

要摆脱此错误,请转到工具→Internet选项→安全性→选择Internet图标→单击自定义级别→选择启用以进行初始化并编写未标记为可安全执行脚本的ActiveX控件脚本。 />
我没有在除IE8之外的任何其他测试器上测试过这个,但我相信它会起作用。