2012-09-05 54 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个纯文字句子来解释原因。 –

相关问题