【问题标题】:Open online file with desktop applications? [closed]使用桌面应用程序打开在线文件? [关闭]
【发布时间】:2011-04-26 16:03:11
【问题描述】:

我想让用户在浏览器中单击一个文件(比如说一个 .doc 链接),它将打开本机桌面应用程序(本例中为 Microsoft Word)。

当用户保存文档时,它将保存在网络中。

有没有办法使用 Javascript/HTML 5 执行此操作,还是用户必须下载文件才能使用本机应用程序打开它?

【问题讨论】:

    标签: javascript html windows macos


    【解决方案1】:

    如果您在页面上提供指向此文件的链接:

    <a href="http://example.com/foo.doc">Open foo.doc</a>
    

    它将在用户计算机上使用与此扩展关联的默认应用程序打开。

    如果您希望它在浏览器内内联打开而没有任何弹出对话框,您可以尝试在服务器上设置Content-Disposition HTTP headerContent-Disposition: inline;filename=foo.txt。当然,客户端应用程序必须有一个插件版本,该插件版本可以与浏览器一起使用并且能够内联打开文件(例如 Adob​​e Acrobat Reader 就是这种情况)。

    就您问题的第二部分而言,HTTP 协议规范中绝对没有任何内容允许您这样做,因此为了实现它,它需要定制。客户端程序需要能够与服务器通信并将修改后的文件版本发回。

    【讨论】:

    • 很遗憾,这并不容易......本地应用程序(或操作系统)将更改的文件上传回的简单“保存处理程序 URL”系统可能从根本上改变了 CMS 的方式工作(人们能够使用自己喜欢的应用程序来编辑在线内容)
    • @Pekka,不,这是一个巨大的安全问题。请让我们让客户端应用程序在沙箱中运行,永远不要让它们发回任何东西。
    • @Darin 这可以安全地实现,比如通过一次性上传令牌或额外的身份验证...与任何其他网络请求并没有太大区别
    • @Pekka,它与普通的网络请求不同,因为普通的网络请求无法读取您客户端计算机上的文件,而浏览器插件可以。
    • @Darin 不,我的意思是有一个约定 1. 下载文件并将其存储在本地 2. 在本地打开它,例如使用 Word 或 OpenOffice 或其他任何东西 3. 退出本地应用程序后,将更改的文件上传回上传处理程序(作为正常的 HTTP 文件上传),而不是在临时文件文件夹中消失(就像现在一样)。
    【解决方案2】:

    除非客户端应用程序特别支持,否则无法保存回您的站点。

    【讨论】:

    • 你的意思是在这种情况下浏览器?
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2011-02-15
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多