2013-11-22 82 views
0

我的应用程序创建.xml文件并将它们存储在用户的硬盘驱动器上;我在web.xml中设置了一个默认文件夹来存储文件,比如D:/temp。现在我编写文件后,我需要用JavaScript读取它们,我正在使用具有此功能的JavaScript库mxUtils.load('URL of the file')(该函数返回文件的内容),问题是它给了我一个错误Cross origin requests are only supported for HTTP,(我现在与功能或库没有任何关系)我认为问题在于,由于某些安全问题,您无法读取本地文件。任何人都可以告诉我一些解决方案?谢谢使用javascript从硬盘读取文件

+1

是的,这是一个安全问题。没有人希望他们的浏览器能够无拘无束地访问文件系统。你能详细阐述一下正在使用的浏览器吗(它是一个真正的浏览器还是嵌入式的)? mxUtil文档说:“您可能需要加载chrome://global/content/contentAreaUtils.js以禁用Mozilla中的打开,保存,保存和复制功能的某些安全限制。” – SpliFF

+0

如果您正在一台机器上运行并测试您的应用程序,那么请通过从其他某台机器上点击您的应用程序来重新进行验证。我真的怀疑你是否可以通过在web.xml中配置一些东西来保存客户端硬盘上的任何文件。 – jsjunkie

+0

@SpliFF如果我将文件保存在服务器上而不是用户的机器上,那我该如何读取这些文件? –

回答

2

你不能使用javascript访问本地文件系统。 要使用JavaScript访问文件,您必须将其上传到服务器并使用文件url访问它。

+0

假设文件在服务器上,我该如何访问它? –

+0

@ShaheMasoyan您必须使用HTTP或FTP等协议为文件提供url。 例如:'http:// yourserver.com/files/web.xml' 然后您可以使用'mXutils.load(url)'或'mxUtils.get(url,onload,onerror)' –

+0

该文件位于硬盘不在我的应用程序源文件中(例如:它位于D:/)如何传递网址? –

1

最好通过HTTP公开您的文件,并使用mxUtils.load("http://yoursite/static/yourfile.xml")

Apache HTTP Server HowTo上搜索static files。设置Apache以提供您的xml文件,请确保您可以在浏览器中查看xml文件,然后在mxUtils.load调用中使用相同的URL。

+0

我的文件存储在硬盘上,无法使用'http:// yoursite/yourfile.xml'来访问。 –

+0

您在服务器端使用什么技术? Node.js的? Asp.Net? –

+0

Apache Tomcat 6.0 –

1

如上所述,您不能严格通过Javascript访问文件系统上的文件。你可以,但是,使用input文件类型的文件上传到服务器,然后阅读:

<input type="file" name="myfileinput"> 

然后,您可以通过$_FILES全球访问它在PHP - 其他语言也可通过其他提供此功能手段。请再次注意,没有他们的同意(即使用文件输入类型),绝对没有办法使用Javascript访问某人文件系统上的文件。这将是一个巨大的安全风险 - 想象一下到一个页面,让它擦拭整个驱动器。