2014-10-30 99 views
1

我們正在使用gwt上傳文件,但是我想通過在瀏覽器中拖放來上傳文件。它與鉻瀏覽器工作正常,但不適用於Firefox,因爲在Chrome瀏覽器顯示選擇文件和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); 

    } 
} 

在此先感謝。

+0

我們回答您的問題的信息太少。什麼gwt版本?瀏覽器版本?你使用什麼組件?一些代碼? – Charmin 2014-11-03 14:55:01

+0

你好@Charmin,我已經添加了代碼和所需的信息,請查看我的上述查詢。 – majji 2014-11-04 08:59:28

回答

1

您在正確的軌道上,只需用智能GWT代碼替換原生GWT代碼即可。

您正在將GWT與智能GWT組件混合使用。你不應該這樣做,根據http://forums.smartclient.com/showthread.php?t=8159#aMix。 「原因是最大程度上限制了兩個Ajax小部件包(包括GWT)可以互操作......」

智能GWT有其自己的文件選取器,請參閱http://www.smartclient.com/smartgwtee/javadoc/index.html?overview-summary.html(FileItem)。並且它也是自己的Canvas系統:不要使用GWT RootPanel,使用智能GWT Canvas或VLayout等。

儘管智能GWT在名稱中有「GWT」,儘管它使用GWT的大部分(GWT編譯器,等等),智能GWT真的是一個框架本身。除了少數情況(例如登錄頁面)外,將Smart GWT與本地GWT混合並不可取。