【问题标题】:Pass File from Javascript to Java Uploader Applet将文件从 Javascript 传递到 Java Uploader Applet
【发布时间】:2012-09-05 02:21:50
【问题描述】:

我有一些 Java Applet,我想用它来将文件上传到 FTP 服务器。最重要的方法是上传(字符串 ftpServer、字符串用户名、字符串密码、字符串文件路径、文件源文件)。 在 JS 代码中,我存储了从 input="file" 获取的数组数据(用户可以将文件附加和删除到他之前创建的不同对象,所以我必须将这些数据存储在某个地方)。

问题是文件数据由JS文件对象表示,当调用上传函数时被识别为sun.plugin2.main.client.MessagePassingJSObject(尝试初始化新的java.io.File对象时也是如此)。

所以问题是: 是否有可能以某种方式将与 java.io.File 兼容的对象或有关文件的数据(我猜只有完整路径)传递给 Java 小程序?

如果没有,有没有办法从使用 FileReader 读取的 Java 代码文件上传到 String(例如使用 .readAsBinaryString 方法)?

或者如果我的问题存在任何其他解决方案?

编辑:

更多上下文:

Ftp 上传小程序是应用程序的一部分,它使用画布元素(具体来说是 fabric.js 库)。将新元素添加到画布区域后,用户可以选择一个元素并向该元素添加/分配一些文件(任何图像文件)。图像不必加载到Canvas区域,只需在选择特定元素时,它们的名称应显示在Canvas下面的列表中。当然,它们也可以被删除。

用户确认完成一些数据后发送(post)到服务器端准备一个控制文件,然后将该文件上传到ftp服务器。控制文件中所需的有关所选文件的唯一信息是文件名,因此我认为可以将文件选择器添加到小程序而不是 JS 代码,而不是从小程序发送该数据或将其传递给 javascript,然后发送。在发布控制文件数据之前或之后,用户选择的所有文件也应该上传到 ftp 服务器。

不幸的是,有一种情况是必须将文件加载到画布中并在确认后发送到 ftp 服务器 - 背景图像文件。

【问题讨论】:

  • AFAIU 类型为fileinput 不向JS(或Java,或服务器)提供允许它们中的任何一个确定本地磁盘上的文件名或路径的对象。所以基本上你想做的事情注定要失败。重新考虑工作流程。 @user1643723 似乎有一些有用的建议。
  • 好吧,正如我在 javascript 规范中所读到的,这些数据不能传递到不同的计算机,所以我认为它可以从 JS 到 Java 小程序,因为它们都在同一台机器上运行。

标签: java javascript file applet


【解决方案1】:

我不知道有什么方法可以通过Live Connect 将 HTML5 创建的 ArrayBuffer 传递给小程序,但是可以(并且可能稍微更兼容跨浏览器)使用小程序生成 Java 文件选择器并从磁盘读取文件(使用JNLP FileOpenService,您无需签署小程序即可完成)。

【讨论】:

  • 我考虑将文件选择功能添加到小程序而不是javascript代码,但我试图避免这种情况(我不会在这里粘贴代码来解释原因,它很长)。看来我也别无选择。
  • "不会在此处粘贴代码解释原因" 尝试使用 2 或 3 句简单的词来解释原因。
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2010-11-29
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
相关资源
最近更新 更多