是否可以将本地文件从文件管理器拖放到浏览器并获取文件的uri?

时间:2014-08-31 19:51:40

标签: javascript drag-and-drop single-page-application tiddlywiki

上下文

我是TiddlyWiki(离线非线性个人笔记本)用户,我想改进图像附加的工作流程。将图像附加到TW的基本方法是编写如下内容:

[img[image-url-either-absolute-or-relative]]

在编辑区域。问题是,如果我有20张图片我想要附加,我必须提取20个网址并粘贴它们(并使用[img [...]]包装器)。我的想法是编写一个插件,允许我将20个文件从文件管理器拖放到编辑区域,并获得20个网址(更好地包含基本的[img [...]]语法或其他一些)。

这可能吗?:

获取本地文件的URL(或uri,无论如何)不是Web应用程序的常用操作,出于安全原因,它似乎是被禁止的(至少在默认情况下是这样)。不过,有没有办法改变这个?前提是用户将接受任何安全警告。

可能是解决方法吗?

如果有解决方法的可能性(可能使用AutoHotKey或其他方式),我会很高兴听到(请记住,目标是改善工作流程,因此最少额外点击/ keypressing是可取的。)


目前,我很乐意为Window 7 + Opera 12.17实现这一点,但是当然解决方案越普遍,越好(最终,我会与其他人分享#' 39;有用的)。是的,目前我正在谈论TW Classic,而不是TW5。

1 个答案:

答案 0 :(得分:0)

使用进行复制操作的方法有两个阶段:

首先,您使用drag-and-drop upload 1 [2]的HTML5支持将get文件添加到浏览器中。

正如我链接的页面所示,HTML5 File API为您提供了文件名(没有路径),mimetype(可能是猜测),大小(以字节为单位)和内容。 (API规范还显示了上次修改日期的字段)

然后,第二步是将文件放回到相对于TiddlyWiki文件的已知位置的磁盘上,并在当前光标位置插入相对URL。

TiddlyWiki拥有一系列不同的saver后端,所以你基本上想要使用相同的API TW经典用来编写备份文件和可选的RSS ChangeLog。

注意:这可能会在TW5中提供,也可能不会提供。我记得看到重新添加备份支持仍然在路线图上,并且从savers/tiddlyfox.js判断,它似乎目前硬编码TiddlyWiki本身的路径。但是,将它们作为二进制数据提示器保存在Wiki中始终是一种选择。

至于没有制作副本的话......

我得到了一个非常强烈的印象,即出于安全考虑,它不可能做到完美,但这里有一些想法:

  1. 如果您愿意手动输入路径或保证文件始终位于已知文件夹中,则可以使用File API仅检索文件名。
  2. 您可以编写实现此工作流程的脚本或插件:
    1. 在资源管理器中复制文件
    2. 将光标定位在您想要URL的位置
    3. 按全局热键
  3. 作为多年前搬到Linux的人,我使用的是Python + PyGTK + python-xlib,但是AutoHotKey是GPLed,应该允许你在Windows上执行:

    1. 它可以绑定全局热键
    2. 可以阅读剪贴板
    3. 如果您无法找到或编写Python os.path.relpathurllib.pathname2url的AHK克隆,您可以调用外部脚本来完成工作。
    4. 它可以伪造按键,允许它自动输入你的TiddlyWiki编辑窗口。