如何让用户通过复制/粘贴上传文件?

时间:2011-12-11 22:16:05

标签: javascript html5 file-upload extjs

我正在尝试基于ExtJS创建一个Web应用程序,我正在处理应用程序的文件上传区域。

我希望用户能够通过复制和粘贴文件来上传文件 - 不仅仅是复制和粘贴文件的内容,还包括文件本身。例如,在Windows中,您可以在选择文件时从“编辑”菜单中选择“复制”或“剪切”,然后选择“粘贴”以后复制或移动文件 - 我希望用户能够上传文件通过在浏览器中选择粘贴,在粘贴步骤中访问我的应用程序。

我已经尝试过HTML5的拖放式API,但我们不想使用它 - 我们希望用户能够复制/剪切和粘贴文件以上传文件(只要它们是小于20兆字节)。如果用户将路径复制到他们的文件并直接粘贴到页面,告诉我们在哪里找到该文件,那也可以。

有人可以建议这样做吗?

2 个答案:

答案 0 :(得分:6)

问题是,您无法使用javascript访问客户端文件系统。有这个新的Filesystem API,但这只允许您创建一个虚拟沙盒文件系统。我有同样的问题,想了一会儿,想出了以下的想法。

  1. <强>闪存

    编写一个访问文件系统的Flash桥,让javascript通过swliveconnect

    与之通信

    问题:Flash也没有文件系统访问权限。

  2. Java applet

    与Flash相同,再次使用LiveConnect

    在我看来这可行,但我没有尝试,因为我的目标是在chromebook上获取文件系统访问权限。并且chromeOS不支持Java(至少没有一些黑客攻击)

  3. <强>的ActiveX

    我也找到了一些解决方案。我放弃了applet部分,所以我也没试过。

  4. 正如Jared Farrish所说,当你复制文件时,操作系统只会保存剪贴板中文件的路径。然后,如果您在webapp上收到粘贴事件,只需从剪贴板中取出该字符串并将其转发到您的文件桥。

答案 1 :(得分:-1)

我已经看到DropBox.com允许这样做(在Chrome中 - 似乎在IE中不起作用)。我没有专门剪切和粘贴,而是将文件从本地文件夹拖到一个Dropbox页面,然后上传文件。所以,这并没有直接回答你的问题,但也许你可以看看它们是如何在他们的代码中完成的。