【问题标题】:Reading files from hard drive with javascript使用javascript从硬盘读取文件
【发布时间】:2013-11-22 05:58:01
【问题描述】:

我的应用程序创建.xml 文件并将它们存储在用户的硬盘上;我在web.xml 中设置了一个默认文件夹来存储文件,比如说D:/temp。现在,在我写完文件后,我需要用 javascript 读回它们,我正在使用一个 javascript 库,它有这个函数mxUtils.load('URL of the file')(这个函数返回文件的内容),问题是它给了我一个错误@ 987654325@,(我现在和函数或库没有任何关系)我认为问题是由于某些安全问题,您无法读取本地文件。任何人都可以告诉我一些解决方案吗?谢谢

【问题讨论】:

  • 是的,这是一个安全问题。没有人希望他们的浏览器可以不受限制地访问文件系统。您能否详细说明正在使用的浏览器(它是真正的浏览器还是嵌入式浏览器)? mxUtil 文档说“您可能必须加载 chrome://global/content/contentAreaUtils.js 以禁用 Mozilla 中的某些安全限制,以实现打开、保存、另存为和复制功能。”
  • 如果您在单台机器上运行和测试您的应用程序,请从其他机器上点击您的应用程序重新验证。我真的怀疑你是否可以通过在 web.xml 中配置一些东西来保存客户端硬盘上的任何文件
  • @SpliFF 如果我将文件保存在服务器而不是用户的机器上,我可以读取文件吗?
  • 是否必须是实际的物理文件,您可以使用本地存储将数据保存在浏览器中。

标签: javascript file-io


【解决方案1】:

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

【讨论】:

  • 假设文件在服务器上,如何访问?
  • @ShaheMasoyan 您必须使用 HTTP 或 FTP 等协议为文件提供 url。例如:http://yourserver.com/files/web.xml 然后你可以使用mXutils.load(url)mxUtils.get(url,onload,onerror)
  • 该文件位于硬盘驱动器上而不是我的应用程序源文件中(例如:它位于 D:/ )我如何传递 url?
  • @ShaheMasoyan 您无法使用 javascript 从硬盘读取本地文件。如果你想这样做,你已经在浏览器中安装了一些插件或其他东西。 MxUtils 文档说requires an ActiveX object in IE and special privileges in Firefox.
  • 如果是这样,美国DV彩票网页的照片编辑工具如何访问我们硬盘上的图像? dvlottery.state.gov 感谢您的任何反馈。
【解决方案2】:

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

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

然后,您可以通过PHP 中的$_FILES 全局访问它——其他语言也通过其他方式提供此功能。请再次注意,未经他人同意(即使用文件输入类型),绝对无法使用 Javascript 访问某人文件系统上的文件。这将是一个巨大的安全风险 - 想象一下进入一个页面并让它擦除你的整个 D:/ 驱动器。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 我的文件存储在硬盘上,使用http://yoursite/yourfile.xml无法访问
    • 您在服务器端使用什么技术?节点.js? ASP.NET?
    猜你喜欢
    • 2012-07-09
    • 2010-10-23
    • 2012-05-15
    • 1970-01-01
    • 2011-10-31
    • 2017-08-17
    • 2011-01-09
    • 1970-01-01
    相关资源
    最近更新 更多