2011-12-11 54 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