2017-04-27 12 views
1

私はgwtクライアントを持っています。これで、ユーザーのファイル(イメージ)をサーバーに転送して保存しようとしています。 RestyGWTを介してFileUploadを使用してGWTからファイルを転送する方法を教えてください。私はそれがFormPanelを使用するためには、私は、setAction()とsubmit()メソッドを使用する必要があると思うが、私はRestyGWTを使用していると思う、と私はどのように私はrestyGWT経由でデータを転送できますか?GWTクライアントからRestyGWT経由でFileUploadを使用してファイルを転送する

クライアント側:

private FormPanel fileUploadPanel; 
private FileUpload fileUpload; 
private void create() { 
//Some code // 
    fileUpload = new FileUpload(); 
    fileUploadPanel = new FormPanel(); 
    fileUploadPanel.setMethod(FormPanel.METHOD_POST); 
    fileUploadPanel.setEncoding(FormPanel.ENCODING_MULTIPART); 
    fileUpload.setName("upload"); 
    fileUploadPanel.setAction("http://localhost:8080/api/events/upload"); 
    fileUploadPanel.add(fileUpload); 
//Some code// 
} 


@POST 
@Path("UPLOAD_PATH") 
void uploadImage(/*i don't know how what must be here */, 
      MethodCallback callback); 

サーバー側:

@Path("/upload") 
@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public void uploadImage(
     @FormDataParam("upload") InputStream uploadedInputStream, 
     @FormDataParam("upload") FormDataContentDisposition fileDetail) { 

    String uploadedFileLocation = "some_path" + fileDetail.getFileName(); 

    writeToFile(uploadedInputStream, uploadedFileLocation); 

} 

答えて

0

クライアント

public UploadPanel() 
{ 
    Div div = new Div(); 

    final FormPanel formPanel = new FormPanel(); 
    formPanel.setEncoding(FormPanel.ENCODING_MULTIPART); 
    formPanel.setMethod(FormPanel.METHOD_POST); 
    formPanel.setAction("uploadFileServletUrl"); 
    formPanel.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() 
    { 
     @Override 
     public void onSubmitComplete(SubmitCompleteEvent event) 
     { 
     GWT.log("event.getResults = " + event.getResults()); 
     } 
    }); 

    FileUpload fileUpload = new FileUpload(); 
    fileUpload.getElement().setAttribute("multiple", null); 
    fileUpload.setName("abcupload"); 
    div.add(fileUpload); 
    Hidden hidden = new Hidden("id", "8"); //just an example of how to pass a parameter 
    div.add(hidden); 

    Button butUpload = new Button("Upload"); 
    div.add(butUpload); 
    butUpload.addClickHandler(new ClickHandler() 
    { 
     @Override 
     public void onClick(ClickEvent event) 
     { 
      formPanel.submit(); 
     } 
    }); 

    formPanel.add(div); 
    this.initWidget(formPanel); 
} 

これは、サーバーに標準のマルチパートrequertを掲載します。そこでは、パーツを読み込むだけです(この例では、 "id"パーツと "abcupload"パーツがファイルになります)。

私は常にサーバサイドのためにC#を使用しているので、Javaサーバコードを投稿することはできませんが、マルチパートPOSTリクエストでは標準的な読み方でなければなりません。

関連する問題