【问题标题】:Solutions to allowing intranet/local file access in an HTML5 application?允许在 HTML5 应用程序中访问 Intranet/本地文件的解决方案?
【发布时间】:2012-04-23 07:49:34
【问题描述】:

我非常清楚,即使使用新的 FileAPI,也无法访问使用文件输入字段或拖放添加的文件的本地路径。无论这是好,坏或丑陋不是这里的问题。根据 FileAPI 规范,不会实现本地文件访问,所以我没有屏住呼吸。

但我们只是假装我处于以下固定参数的情况:

  • 开发仅供公司内部使用的 HTML5 应用程序
  • .NET 用于后端(需要与 API 互操作)
  • 可以准确指定/控制应用程序应使用的浏览器和版本
  • 需要访问通常位于网络共享上的文件,但也可能在用户工作站本地访问

我所说的访问并不是指访问文件数据,而是能够通过向第三方提供文件的本地路径来将文件拖放/选择事件传递给其他 API,以便第三方可以拿起文件并对其进行某种处理。这可以比作使用 input[type=file] 字段,就像您在 .NET 中使用 OpenFileDialog 一样 - 即重点是为应用程序提供文件路径,而不是实际文件

我意识到开箱即用这可能是不可能的。但我也认为这个问题必须有某种解决方案。

我一直在玩弄的一些想法是:

  • 使用特定于浏览器的方法来允许“安全功能”
    • 不确定是否可行 - 厌倦了使用其中一些功能但无济于事
    • 将应用程序限制为特定版本的浏览器,因为将来可能会删除该功能
    • Chrome 扩展程序之类的东西可能会解决问题
  • 使用本地安装在客户端计算机上的某种配套应用程序,该应用程序负责所有磁盘文件处理,可能使用 websocket 等与 HTML5 客户端通信。
    • 一个可能相当混乱的解决方案
    • 一开始可能会让用户有点困惑
  • 将选中的文件数据提交给服务器,存储在特定路径,并将这个新路径发送给第三方。
    • 将构成通过公司网络发送大量文件,大小约为 100+ MB
    • 无法对用户选择的文件进行任何就地更改

...仅此而已。

有什么时髦的建议吗?明智的话?有用的网址?刻薄的cmets?

谢谢。

编辑:对于任何对此感到好奇的人,按照下面 jgauffin 的建议,使用 Silverlight 非常简单。

来自 Silverlight 代码隐藏(使用提升的权限):

private void fileBtn_Click(object sender, RoutedEventArgs e)
{
    //prompt file select dialog in Silverlight:
    var dlg = new OpenFileDialog();
    dlg.ShowDialog();
    //call JavaScript method and feed it the file path:
    HtmlPage.Window.Invoke("onFileSelected", dlg.File.FullName);
}

【问题讨论】:

标签: javascript html


【解决方案1】:

您可能必须使用在浏览器中运行的东西,例如 flash 或 silverlight。

因为它是一个内部应用程序,所以我会使用 silverlight,因为其他一切都在 .NET 中。只在插件中做文件访问部分就足够了。

这里有一篇关于本地文件访问的文章:https://www.wintellect.com/silverlight-4-s-new-local-file-system-support/

【讨论】:

【解决方案2】:

托管该站点的服务器是否可以访问 pc 的网络?

你可以这样列出所有文件.. 构建一个小的 ajax 脚本,比如一个文件对话框,它将有 php 或任何发回结构的东西

无需插件,适用于所有浏览器... :)

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多