【问题标题】:Transfering file from GWT client using FileUpload via RestyGWT通过 RestyGWT 使用 FileUpload 从 GWT 客户端传输文件
【发布时间】:2017-09-25 02:38:36
【问题描述】:

我有一个 gwt 客户端,现在我正在尝试将用户的文件(图像)传输到服务器并保存它们。你能解释一下如何通过 RestyGWT 使用 FileUpload 从 GWT 传输文件吗?我发现使用 FormPanel 是必要的,我认为我必须使用 setAction() 和 submit() 方法,但我使用的是 RestyGWT,我不明白如何通过 restyGWT 传输数据?

客户端:

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);

}

【问题讨论】:

    标签: java file-upload gwt


    【解决方案1】:

    客户

    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);
    }
    

    这将向服务器发布一个标准的多部分请求。在那里,您只需要阅读这些部分(在本例中,您将有一个“id”部分和一个“abcupload”部分,即文件)。

    我不能发布任何 Java 服务器端代码,因为我总是使用 C# 作为服务器端,但这应该只是读取多部分 POST 请求的标准方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多