2011-12-11 182 views
9

我想创建一个基于ExtJS的Web应用程序,并且我正在处理应用程序的文件上传区域。如何让用户通过复制/粘贴来上传文件?

我希望用户能够通过复制和粘贴文件来上传文件 - 不只是复​​制和粘贴文件的内容,而是文件本身。例如,在Windows中,您可以在选择文件时从编辑菜单中选择“复制”或“剪切”,然后选择“粘贴”并复制或移动文件 - 我希望用户能够上传文件只需在浏览器中选择“粘贴”即可将其粘贴到我的应用程序中。

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

任何人都可以提出一种方法来做到这一点?

+1

Windows处理该问题的方式是使用系统剪贴板,该系统剪贴板处理用于在其他位置复制/剪切和粘贴的文件引用。你需要知道的是,如果在复制/剪切/粘贴操作期间浏览器窗口可以访问剪贴板上的文件句柄。另一种选择可能是Flash或Java应用程序来扩展浏览器。 –

+0

你是在说我需要创建一个桥梁sorta的东西,将处理所有的剪切/复制权 –

回答

6

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

  1. 闪存

    写闪存桥,它访问文件系统,让JavaScript的通过swliveconnect

    问题与它通信:闪光灯没有文件系统访问无论是。

  2. Java小程序

    同样的事情,Flash和再次LiveConnect

    在我看来这可能是工作,但我没有尝试它,因为我的目标是在得到文件系统访问一本chromebook。和Chrome操作系统不支持Java(至少没有一些黑客)

  3. 的ActiveX

    我也发现这个了一些解决方案。我放弃了applet部分,所以我也没有尝试过。

正如Jared Farrish所说的,当你复制一个文件时,os只会将路径保存到剪贴板中的文件中。然后,如果您在web应用程序上收到粘贴事件,只需将该字符串从剪贴板中取出并转发到文件桥。

+0

好,谢谢你的帮助,我想知道我将要使用的东西,因为我要建立它在HTML 5是正确的做到这一点! –

+0

哦,这里的问题是,如果已经有一个支持复制/粘贴事件的html5 api,那么我需要桥接器 –

+0

通过剪贴板API的粘贴事件,您只需获取文件的绝对路径。要实际访问文件,您需要一个文件桥接器。 –

-1

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

+0

你误会了这个问题。不拖放,但复制并粘贴。 – freemanoid