【问题标题】:Accessing contents of a file in a web-application without uploading在不上传的情况下访问 Web 应用程序中文件的内容
【发布时间】:2010-06-14 03:35:31
【问题描述】:

据我所知,如果不先上传到服务器,然后重新下载给用户,就不可能在 Web 应用程序中访问用户计算机上的文件内容,除非使用了某种插件. (Flash 等)理想情况下,用户将文件直接上传到本地存储,然后脚本将有机会处理/显示/验证/过滤,而无需用户等待上传。

即将推出的网络标准(例如 html5)中是否有任何功能允许这样做?如果没有,为什么没有努力使这成为可能,我怎样才能在不被插件卡住的情况下解决它?

编辑: 不要假设我想让 JavaScript 在没有任何用户干预的情况下访问硬盘上的任意文件。 我们已经有了提示用户输入文件并上传的能力,我只希望能够提示用户将文件加载到浏览器的内存中。 我只是希望 HTML5 能够支持您已经可以使用 Flash 和 Java 小程序执行的操作。

【问题讨论】:

标签: javascript web-applications file-upload html


【解决方案1】:

【讨论】:

  • 多年来对此的支持发生了变化。文件阅读器可以完成大多数人获取文件内容所需的更多工作。 caniuse.com/#feat=filereader
【解决方案2】:

您可以在 HTML 5(或 6、7、...)中做什么取决于具有竞争议程的不同供应商群体认为新的 HTML 版本应该或不应该做什么......它是designed by committee

授予您创建的网页访问计算机上资源(例如文件)的权限会造成一个非常大的安全漏洞(您希望我的网页读取您的电子邮件和家庭银行文件吗?)

委员会不太可能同意对会造成安全风险的功能进行标准化,因为只有一个设备/平台上的一个浏览器需要糟糕地实施该标准才能向黑客开放Pandora's Box

单个供应商(制作插件的人)不必让一大堆其他公司就某项功能达成一致。他们只是实现它,用户可以决定他们是否足够信任它来安装它。微软对此的第一次尝试是major security disaster

【讨论】:

    【解决方案3】:

    就像 Raul 和 Eric 指出的那样,这涉及到一个重大的信任问题,并且要求人们提供他们不知道的代码来访问他们的硬盘驱动器不会让您的网站受欢迎。

    您可能很长时间无法在插件或浏览器特定功能/插件之间进行选择。

    也就是说,您可以通过充分利用这种情况来做一些很酷的事情。我多次使用的一种方法是在网页上显示一个不可见的插件(在我的例子中是 Applet),但完全通过 JavaScript 控制它,为网络应用程序提供非常“自然”的外观和感觉。

    另一种方法是某种渐进式增强 - 为安装了所需插件并选择使用它的用户提供增强的体验。我已经在http://www.pdfcombine.com 等网站上对此进行了试验 - 没有安装 Java 插件的用户可以通过将 PDF 文件上传到服务器并下载合并的文件来合并 PDF 文件,而使用 Java 插件的用户将获得使用 Applet 在本地完成所有操作的选项。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2011-12-11
      • 2020-01-18
      • 1970-01-01
      • 2016-03-30
      • 2023-03-12
      相关资源
      最近更新 更多