2013-02-14 45 views
0

我使用gwtupload(http://code.google.com/p/gwtupload/),我需要在开始文件上添加这个。有人知道我该怎么做?GWTUploader开始添加文件

+0

你能否在你的问题上更清楚一点,我不明白你的意思是'我需要在开始文件上添加' – 2013-02-14 15:06:01

+0

好吧。我创建了MultiUpload对象,并且当您单击浏览文件并选择一个将其添加到此MultiUploader的对象时,它内部没有任何文件。我的问题是,我需要添加文件,当我创建对象,以后用户可以删除这个或添加更多。 – Zaki 2013-02-14 15:48:00

+0

有趣的问题,但我恐怕你不能实现这一点。由于安全原因,试图从用户添加文件或添加您的文件是有问题的。 – qben 2013-02-14 16:21:05

回答

1

我可以推断您想要将先前上传的文件添加到multiuploader列表中。 尽管您可以在项目site上打开一张票,但我将在下一个版本中实施它,但目前无法使用MultiUploader

但你可以扩展MultiUploader和代码解决办法,这个例子的工作原理:

public class GwtTestApp implements EntryPoint { 

    public void onModuleLoad() { 
    MyMultiUploader uploader = new MyMultiUploader("file1.txt", "file2.doc"); 
    RootPanel.get().add(uploader); 
    } 

    public static class MyMultiUploader extends MultiUploader { 

    private VerticalPanel panel; 
    private Widget multiuploader; 

    @Override 
    protected void initWidget(Widget widget) { 
     panel = new VerticalPanel(); 
     super.initWidget(panel); 
     multiuploader = widget; 
    } 

    public MyMultiUploader(String ...files) { 

     for (String f : files) { 
     Uploader u = (Uploader)getUploaderInstance(); 
     IFileInput i = u.getFileInput(); 
     IUploadStatus s = u.getStatusWidget(); 

     i.setVisible(false); 
     s.setVisible(true); 
     u.getForm().removeFromParent(); 

     u.setServletPath("whatever"); 
     s.setFileName(f); 
     s.setStatus(Status.SUCCESS); 

     final String name = f; 
     s.addCancelHandler(new UploadCancelHandler() { 
      public void onCancel() { 
      Window.alert("Cancel " + name); 
      } 
     }); 

     panel.add(u); 
     } 

     panel.add(multiuploader); 
    } 

    } 

} 
+0

感谢您的回答。我有另一个问题。我设置uploader.setMaximumFiles(2),但是当我创建uploader像你的例子中这个参数被省略。只有以“正常”方式添加文件时,此参数才能正常工作。 – Zaki 2013-02-15 10:45:09

+0

我点击取消按钮后还需要获取文件名。我尝试创建方法,但我不知道如何在其他类中自动获取该名称。 – Zaki 2013-02-15 12:29:53

+1

setMaximumFiles应该可以工作,但请注意,它不会计算以前添加的文件。您在示例中的内部类的方法onCancel中有名称,因此您必须从此方法调用其他类。 – 2013-02-15 13:30:37

0

我认为,我们需要在servlet的

Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>(); 
/** 
* Maintain a list with received files and their content types. 
*/ 
Hashtable<String, File> receivedFiles = new Hashtable<String, File>(); 

添加的文件,但我不知道如何...