2012-09-05 53 views
0

我有一些Java Applet,我想用它來上傳文件/文件到FTP服務器。最重要的方法是上傳(String ftpServer,String username,String password,String filePath,File sourceFile)。 在JS代碼中,我存儲在從input =「file」中獲取的數組數據中(用戶可以將文件附加到文件並將其移除到之前創建的不同對象,因此我必須將這些數據存儲在某處)。將文件從Javascript傳遞到Java上傳程序Applet

問題是當調用upload函數被識別爲sun.plugin2.main.client.MessagePassingJSObject時(當嘗試初始化新的java.io.File對象時也是如此),文件數據由JS File對象表示。

所以問題是: 是否有可能通過某種方式將與java.io.File兼容的對象或關於文件的數據(我猜只是完整路徑)傳遞給Java小程序?

如果不是有沒有辦法從Java代碼文件上傳與FileReader到字符串(例如使用.readAsBinaryString方法)?

或者如果存在任何其他解決方案,我的問題?

編輯:

多一點上下文:

FTP上傳小程序是應用程序的一部分,它使用帆布元件(和fabric.js庫是特異性的)。將新元素添加到畫布區域後的用戶可以選擇一個元素並將某些文件添加/分配給該元素(任何圖像文件)。圖像不需要加載到畫布區域,當選擇特定元素時,它們的名稱應該出現在畫布下方的列表中。當然,它們也可以被刪除。

用戶確認他完成了一些數據發送(後)到服務器端準備控制文件,比上傳這個文件到FTP服務器。關於控制文件中所需的選定文件的唯一信息是文件名,所以我認爲可以將文件選擇器添加到小程序而不是JS代碼,而不是從小程序發送該數據或將它傳遞給JavaScript,而不是發送。在發佈控制文件數據之前或之後,用戶選擇的所有文件也應該上傳到ftp服務器。

不幸的是,有一種情況是文件必須加載到畫布中,並在確認後發送到FTP服務器 - 後臺圖像文件。

+0

AFAIU'file'類型的'input'沒有爲JS(或Java或服務器)提供一個對象,允許它們中的任何一個確定本地磁盤上的文件名或路徑。所以基本上你想要做的是註定要失敗。重新思考工作流程。 @ user1643723似乎有一些有用的建議。 –

+0

那麼,正如我在JavaScript規範中讀到的,這些數據不能傳遞給另一臺計算機,所以我認爲它可以從JS到Java小程序,因爲它們都運行在同一臺機器上。 – user1647727

回答

1

我不知道任何方法通過Live Connect將HTML5創建的ArrayBuffer傳遞給小程序,但它可能(也可能稍微多一些跨瀏覽器兼容)產生Java文件選擇器並使用小程序從磁盤讀取文件(與JNLP FileOpenService你可以沒有簽名小程序)。

+0

我認爲添加文件選擇功能,而不是JavaScript代碼,但我試圖避免(我不會在這裏粘貼代碼來解釋爲什麼,這是相當長的)。無論如何,看起來我沒有選擇。 – user1647727

+0

*「這裏不會粘貼代碼來解釋原因」*嘗試使用2或3個純文字句子來解釋原因。 –

相關問題