使用“浏览器”中“浏览”按钮上的“拖放”上载文件

时间:2014-10-30 11:36:22

标签: gwt file-upload smartgwt

我们正在使用来自gwt的文件上传,但我想通过拖放在浏览器中上传文件。它与Chrome浏览器工作正常,但不能与Firefox一起工作,因为在Chrome中它显示选择File和Firefox它显示浏览选项。如何通过拖放操作在Firefox浏览器中上传文件?

我们正在使用GWT 2.5.1和Smart Gwt 4.1。 我们可以拖放任何版本的chrome,但不能在任何版本的firefox浏览器中拖放。

代码段:

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.FileItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class TestApp implements EntryPoint {
    @Override
    public void onModuleLoad() {

        VLayout vTest=new VLayout();
        vTest.setBackgroundColor("#D3D3D3");

        VLayout fileVLayout = new VLayout(10);
        fileVLayout.setAutoWidth();
        fileVLayout.setAutoHeight();
        fileVLayout.setPadding(10);
        final DynamicForm form = new DynamicForm();

        TextItem filename = new TextItem();
        filename.setTitle("File Name");
        TextItem uploader = new TextItem();
        uploader.setTitle("uploader name");
        uploader.setWrapTitle(false);


        **// Smart GWT** 
        final FileItem uploadfile = new FileItem();
        uploadfile.setTitle("File Item");
        uploadfile.setAlign(Alignment.CENTER);

        **// GWT** 
        final FileUpload fileTest = new FileUpload();
        fileTest.setTitle("File Upload");

        form.setItems(filename, uploader, uploadfile);
        form.draw();

        HLayout fileHLayout = new HLayout(10);
        fileHLayout.setHeight(10);
        Label fileNameStaticLabel = new Label();
        fileNameStaticLabel.setContents("File Upload");
        fileNameStaticLabel.setWrap(false);
        fileNameStaticLabel.setHeight("25px");
        fileNameStaticLabel.setAlign(Alignment.RIGHT);

        fileVLayout.addMember(form);
        fileHLayout.addMember(fileNameStaticLabel);
        fileHLayout.addMember(fileTest);

        vTest.addMember(fileVLayout);
        vTest.addMember(fileHLayout);

        RootPanel.get().add(vTest);

    }
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

您已走上正轨,只需使用智能GWT代码替换原生GWT代码。

您正在将GWT与Smart GWT组件混合使用。根据{{​​3}},你不应该这样做。 &#34;原因是两个Ajax小部件工具包的最大程度有限制 (包括GWT)可以互操作......&#34;

Smart GWT有自己的文件选择器,请参阅http://forums.smartclient.com/showthread.php?t=8159#aMix(FileItem)。它也是自己的Canvas系统:不要使用GWT RootPanel,使用Smart GWT Canvas或VLayout等。

虽然Smart GWT有&#34; GWT&#34;在名称中,尽管它使用了GWT(GWT Compiler等)的大部分内容,但Smart GWT本身就是一个框架。除了极少数情况(例如登录页面)之外,不建议将Smart GWT与本机GWT混合使用。