gpt4 book ai didi

java - 通过 RestyGWT 使用 FileUpload 从 GWT 客户端传输文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:21 25 4
gpt4 key购买 nike

我有一个 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);

}

最佳答案

客户端

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 请求中读取的标准方式。

关于java - 通过 RestyGWT 使用 FileUpload 从 GWT 客户端传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43655433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com