0

さて、JavaでWebサービスを使ってファイルをアップロードする方法をここで検索しましたが、満足のいく答えはありませんでした。いくつかの文字列とファイルのリストを受け取るメソッドを構築する必要があります。複数のファイルをアップロードできる Web サービスを作成する方法について、誰かが指示を与えることができますか?

@WebMethod()
public String criarPA(String name, List<File> files)

このようなものです...ファイルを使用できないことはすでに見ました...では、代わりに何を使用できますか?

4

4 に答える 4

4

WebService で使用する SOAP プロトコルにはそのような型がないため、File は使用できません。ただし、いつでもバイト配列を送信できます。

@XmlType
public class SoapFile implements Serializable {

  private String fileName;
  private byte[] fileData;

  public String getFileName() {
     return fileName;
  }

  public void setFileName(String fileName) {
     this.fileName = fileName;
  }

  public byte[] getFileData() {
     return fileData;
  }

  public void setFileData(byte[] fileData) {
     this.fileData = fileData;
  }
}

これで、コードは次のようになります。

@WebMethod
public String criarPA(List<SoapFile> files)

次に、標準の「Java」方法でFile保存されたバイト配列から作成する必要があります。SoapFile

于 2013-01-17T14:09:19.807 に答える
3

これが方法です。byte[]のリストを送信する必要があります。ファイルの名前が必要な場合は、その属性も追加する必要があります。

JavaのWebサービスを介してファイルを転送する場合は、MTOMを有効にする必要があります。これにより、パフォーマンスが向上します。ステートレスEJBとして実装されたWSエンドポイントのヘッダーは次のとおりです。

@WebService 
@WebContext(contextRoot="FileWS")
@MTOM(enabled=true)
@Stateless
public class FileWS implements IFileWS{

    @WebMethod(operationName = "sendFiles", action = "sendFiles")
    public void sendFiles(@WebParam(name = "name")String name, 
        @WebParam(name = "files")ArrayList<byte[]> files) {
于 2013-01-17T14:59:35.787 に答える
1

「ファイル」は、Java Web サービスでサポートされているタイプではありません。

Java Web サービスでサポートされている型を知りたい場合は、このページ (セクション 3.2.3 Java Web サービスでサポートされているデータ型の使用) を参照してください: http://docs.oracle.com/cd/B15897_01/web.1012/b14027 /javaservices.htm

サーバー側でファイルを 1 つだけアップロードする Web サービスを実装し、クライアント側でファイルの数だけこのメソッドを呼び出すことをお勧めします ;)

ファイルをアップロードするための Java Web サービスを実装するチュートリアルを次に示します: http://www.ibm.com/developerworks/library/ws-devaxis2part3/section2.html

于 2013-01-17T14:13:30.463 に答える
0

別の方法は

SAAJを使用して画像をアップロードできます。

The SAAJ API allows you to do XML messaging from the Java platform:
By simply making method calls using the SAAJ API, you can read and write
SOAP-based XML messages, and you can optionally send and receive such 
messages over the Internet (some implementations may not support sending
and receiving). 

ここで、ファイルに対してどのように機能するかを確認してください。


AttachmentPartオブジェクトの作成とコンテンツの追加:

AttachmentPart attachment = message.createAttachmentPart();

String stringContent = "Update address for Sunny Skies " +
    "Inc., to 10 Upbeat Street, Pleasant Grove, CA 95439";
attachment.setContent(stringContent, "text/plain");
attachment.setContentId("update_address");

message.addAttachmentPart(attachment); 

また

URL url = new URL("http://greatproducts.com/gizmos/img.jpg");
DataHandler dataHandler = new DataHandler(url);
AttachmentPart attachment = message.createAttachmentPart(dataHandler);
attachment.setContentId("attached_image");

message.addAttachmentPart(attachment);

AttachmentPartオブジェクトへのアクセス:

java.util.Iterator iterator = message.getAttachments();
while (iterator.hasNext()) {
    AttachmentPart attachment = (AttachmentPart)iterator.next();
    String id = attachment.getContentId();
    String type = attachment.getContentType();
    System.out.print("Attachment " + id + " has content type " + type);
    if (type.equals("text/plain")) {
    Object content = attachment.getContent();
    System.out.println("Attachment contains:\n" + content);
    }
}

このプロセスをより明確にするには、これを確認してください。

于 2013-01-17T14:20:21.520 に答える