3

GWT 2.5.0DevMode

file upload我在下面做了一个简单的测试,

启动网址:http://127.0.0.1:8888/UploadTest.html?gwt.codesvr=127.0.0.1:9997

<g:FormPanel ui:field="fpUpload">
    <g:VerticalPanel>
        <g:FileUpload name="fileData" ui:field="fuUpload" />
        <g:Button ui:field="btUpload">Upload</g:Button>
    </g:VerticalPanel>
</g:FormPanel>
@UiHandler("btUpload")
public void onClickUploadButton(ClickEvent e) {
    System.out.println("fileName:" + fuUpload.getFilename());
    fpUpload.setEncoding(FormPanel.ENCODING_MULTIPART);
    fpUpload.setMethod(FormPanel.METHOD_POST);
    fpUpload.setAction("/files");
    fpUpload.submit();
    System.out.println("Submitted, please wait!");
}

@UiHandler("fpUpload")
public void onSubmitComplete(SubmitCompleteEvent event) {
    System.out.println("Submit completed!");
}

输出:

fileName:C:\fakepath\one_file_chosen_to_upload
Submitted, please wait!

但是,服务器没有收到submit request,所以“提交完成!” 从未出现。

同时,下面的流量被窥探,submit request根本没有发出。

$ tcpdump -A -i lo port 8888

也没有抛出异常。任何想法?

@编辑

该问题可在ProdMode.

@编辑 2

仅重新启动机器后,现在问题似乎消失了,就像http submit request被忽略通过电线发射一样。不幸的是,我不知道为什么。

4

1 回答 1

1

似乎您没有编写适当的 servlet 来处理多部分请求,而且您必须在web.xml. 您能否将您的 servlet 代码和您的内容添加到您的问题中web.xml

请注意,onSubmitComplete如果服务器返回 404,则不会执行。尝试使用 Firebug 检查服务器响应,或者通过任何方式更改表单操作,以便您遇到相同的失败。

仅供参考,有一个库:gwtupload,它非常易于使用并且有很多不错的功能,也许你可以看看他们的示例页面并尝试一下。

于 2012-12-20T16:23:48.337 回答