【问题标题】:Upload file to webservice (java)上传文件到网络服务(java)
【发布时间】:2009-07-08 14:08:03
【问题描述】:

我正在寻找一种将文件从客户端上传到通过 Web 服务连接的服务器的解决方案。 客户端是用 c# 编写的,web 服务是用 java 编写的。 文件可能相当大

您建议哪种方法最好?

【问题讨论】:

    标签: java web-services upload


    【解决方案1】:

    Base64 编码文件并将其作为附件发送。如果您需要确保附件的内容不会在途中更改,请使用 MTOM。否则,请使用 DIME。

    【讨论】:

      【解决方案2】:

      同意客户端和服务器上的编码,然后使用该编码序列化文件,将其包装在 CDATA 标记中,并将值分配给客户端上 SOAP 请求中的文本节点。

      读取服务器上 CDATA 标记之间的数据,使用约定的编码对其进行反序列化,然后您就可以根据需要使用字节流了。

      如果文件很大,编码涉及某种压缩可能是个好主意,但如果客户端是 .NET 而服务器是 Java,请注意互操作问题。

      【讨论】:

      • 这种方法可能存在一个问题:如果您不使用 MTOM 或 DIME,那么整个文件必须从 Web 服务容器内的 Java 部分保存在内存中,从而导致内存问题如果客户太多
      【解决方案3】:

      对于服务器端,你应该看看Commons File Upload

      【讨论】:

      • Commons 文件上传设计用于 HTML 表单,并且依赖于您在客户端和服务器中都可以访问 HTTP 请求,这通常不是常见的 WS API 的情况。