0

我正在创建一个联系人通讯录,并希望为用户添加上传联系人图片并将其保存到服务器的功能。下面是客户端代码

public class FileUploadDialog extends Composite 
{
    private VerticalPanel panel = new VerticalPanel();
    private DecoratorPanel dPan = new DecoratorPanel();

    public FileUploadDialog()
    {

        initWidget(dPan);
        dPan.setWidget(panel);

        // create a FormPanel
        //final FormPanel form = new FormPanel();
        // create a file upload widget
        final FileUpload fileUpload = new FileUpload();
        // create labels
        Label selectLabel = new Label("Select a file:");
        // create upload button
        Button uploadButton = new Button("Upload File");

        // add a label
        panel.add(selectLabel);
        // add fileUpload widget
        panel.add(fileUpload);
        // add a button to upload the file
        panel.add(uploadButton);

        uploadButton.addClickHandler(new ClickHandler() 
        {
            @Override
            public void onClick(ClickEvent event) {
                // get the filename to be uploaded
                String filename = fileUpload.getFilename();
                if (filename.length() == 0) {
                    Window.alert("No File Specified!");
                } else 
                {
                    System.out.println("submited");
                }
            }
        });         
    }
}

我的问题是如何使用 rpc 调用将图像文件发送到服务器?

4

1 回答 1

1

如果您想使用 RPC,您首先需要将图像的内容作为 byte[] 获取,然后将其发送到服务器。这只有在目标浏览器实现 FileAPI 时才能完成。有几个库公开了 FileAPI,例如lib-gtw-filegwt-file-api。或者,您可以使用 JSNI(所有库都在这样做)来获取文件的内容。

如果您的目标浏览器不支持 HTML5,那么您可以轻松地使用可解析的响应进行简单的表单提交。无论如何,这可能是比通过 RPC 更好的方法。

于 2013-07-23T20:20:43.477 回答