2009-03-09 22 views
26

सभी जीमेल उपयोगकर्ताओं को पहले से ही यह ध्यान रखना चाहिए था कि फाइल अपलोड प्रगति पट्टी हाल ही में अपडेट की गई है।जीमेल के साथ फ़ाइल अपलोड प्रगति पट्टी की तरह जीमेल?

मुझे आश्चर्य है कि जीडब्ल्यूटी के साथ लागू करने के लिए ऐसा प्रभाव संभव है। मैं जीडब्ल्यूटी के साथ काफी नया हूं, इसलिए अगर कोई जीडब्ल्यूटी स्रोत कोड जो मुझे फ़ंक्शन का परीक्षण करने में मदद कर सकता है तो बहुत उपयोगी होगा।

अद्यतन
मैं SWFUpload के साथ जा रहा समाप्त हो गया। हालांकि, इस प्रश्न के तहत अन्य सुझाव सभी मान्य हैं। बस अलग-अलग विकल्पों का प्रयास करें और अपनी पसंद का चयन करें!

उत्तर

21

इस पुस्तकालय के लिए एक नज़र डालें: http://code.google.com/p/gwtupload/। यह उपयोग करना वास्तव में आसान है और मैंने देखा है कि सभी ब्राउज़रों और ओएस में ठीक काम करता है। यह प्रगति की गणना करने के लिए AJAX अनुरोधों का उपयोग करता है। बीटीडब्ल्यू स्विफलोड लोड लिनक्स और मैक में अच्छा नहीं करता है।

+0

हां, यह अंत में उपयोग करके समाप्त हुआ। स्थापित करना और एकीकृत करना बहुत आसान है। – codingbear

+1

प्रगति बार जीएई के साथ काम नहीं करेगा हालांकि (देखें http://code.google.com/p/gwtupload/issues/detail?id=111) –

+0

gwtupload GAE http://code.google.com के लिए तय किया गया है/पी/gwtupload/स्रोत/विस्तार? r = 926 – Ena

3

GWTC Upload देखें, जिसमें आप जो भी खोज रहे हैं उसका कार्यान्वयन है।

+0

मैं वहाँ कुछ भी उपयोगी नहीं दिख रहा है:

package com.hierarchycm.gxt.client.fileUpload; import com.extjs.gxt.ui.client.widget.Html; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Widget; public class FileUploadSwfImpl extends Html implements FileUpload { SwfUploadUtil swfUploadUtil = null; private Uploader uploader; private String url; private boolean createDropHandler; private Grid updateTable; static int uploadId = 0; static String divTagId; public FileUploadSwfImpl() { divTagId = "swfupload" + uploadId++; String divTag = "<div id=\"" + divTagId + "\"></div"; this.setHtml(divTag); } @Override public void uploadFiles() { swfUploadUtil.startUpload(); } @Override public Widget getWidget() { return this; } public void readyToPaint() { swfUploadUtil = new SwfUploadUtil(uploader, updateTable, divTagId, url); } @Override public void initialize(Grid updateTable, Uploader uploader, String url, boolean createDropHandler) { this.uploader = uploader; this.url = url; this.createDropHandler = createDropHandler; this.updateTable = updateTable; } @Override public void setDisabled(boolean b) { swfUploadUtil.setDisabled(b); this.disabled = true; } @Override public void reset() { swfUploadUtil.reset(); } } 

और यह उपयोगिता FileUploadSwfImpl पर निर्भर करता है। आमतौर पर, डाउनलोड या देखने के लिए स्रोत कोड उपलब्ध है। – codingbear

+0

स्रोत टैब पर क्लिक करें: # गैर-सदस्य HTTP पर अज्ञात रूप से केवल पढ़ने योग्य कार्य प्रतिलिपि देख सकते हैं। svn चेकआउट http://gwtcupload.googlecode.com/svn/trunk/ gwtcupload-read-only – rustyshelf

3

यदि आपके पास जावा बैक एंड है तो अपने आप को लिखना मुश्किल है, तो आप बस एक फ़ाइल अपलोड शुरू करें और फिर सर्वर को एक टाइमर पर मतदान करें ताकि यह देखने के लिए कि यह कहां है (हर दूसरे या दो कहें)। जावा फ़ाइल अपलोड बाइनरी (अपाचे कॉमन्स वाले) आपको वर्तमान प्रगति बताते हुए समर्थन करते हैं, इसलिए यह करना मुश्किल है।

+0

एचएम, मैंने सोचा कि यह अधिक सुरुचिपूर्ण हो सकता है क्योंकि हर सेकेंड सर्वर को मतदान करना बहुत परेशान होता है, विशेष रूप से वेब ऐप्स जिनके पास नेटवर्क बाधा है समय। (हो सकता है कि मैं जो कहने की कोशिश कर रहा हूं उससे मैं नहीं देख रहा हूं?) – codingbear

+0

एक गैर-मतदान तकनीक फ़्लैश अपलोडर का उपयोग करना है। इस प्रकार getdropbox.com उनकी अपलोडिंग करता है - यह शानदार लग रहा है, और आप समानांतर में फ़ाइलों को अपलोड कर सकते हैं। Www.getdropbox.com – Chii

+0

@Chii पर इसे देखें, यही मुझे पता चला है। मुझे लगता है कि जीमेल फ्लैश अपलोडर का भी उपयोग करता है, क्योंकि वे एसएफएफ फाइल एम्बेडेड करते हैं। क्या आप जानते हैं कि फ्लैश में ऐसा कैसे करें और एक विशिष्ट वेब ऐप के साथ एकीकृत करें? (मुझे पहले से ही ड्रॉपबॉक्स पता है: डी) – codingbear

4

उपयोग के माध्यम से swfupload-gwt

अन्य विधियों का

मुख्य लाभ SWFUpload यह किसी भी विशेष सर्वर कोड की आवश्यकता नहीं है है। आप किसी अन्य डोमेन पर भी अपलोड कर सकते हैं (यदि कोई crossdomain.xml है जो इसे अनुमति देता है)।

+0

भी ... यह (उम्मीद है) एक अल्पकालिक समाधान है, जैसे ही मुझे उम्मीद है कि गियर्स द्वारा प्रदान की गई सुविधाएं ब्राउज़र में मूल रूप से उपलब्ध होंगी। http://code.google.com/apis/gears/api_httprequest.html#HttpRequestUpload –

0

आप GwtSwfExt का उपयोग कर सकते हैं जो SWFUpload के शीर्ष पर रैपर है (यह Swfupload-gwt lib के समान है) आप http://code.google.com/p/gwtswfext से उदाहरण और स्रोत कोड डाउनलोड कर सकते हैं।

0

अपनी स्वयं की फ़ाइल अपलोड प्रगति बनाते समय, इसे एक छोटे से सेट समय पर फॉर्म सर्वर खींचने के बजाय, आप क्लाइंट को 2 सेकंड के लिए अनिश्चित बार प्रदर्शित करने के लिए रख सकते हैं और सर्वर अनुमानित समाप्ति समय की गणना को वापस कर सकता है प्रत्येक 5, 10 सेकंड के बजाय नए अनुमान निर्धारित करें और खींचें। यातायात पर कोई प्रभाव नहीं होना चाहिए।

1

हाल ही में मैं अपने ही की एक परियोजना gwtupld

http://github.com/kompot/gwtupld/

कहा जाता है मुख्य लक्ष्य अन्य सभी के लिए बढ़त ब्राउज़रों और स्वीकार्य प्रयोज्य को काटने के लिए सबसे अच्छा फ़ाइल अपलोड अनुभव प्रदान करना है शुरू कर दिया। पल करके, निम्नलिखित प्रमुख विशेषताओं

  • एकाधिक फ़ाइल चयन
  • ड्रैग एंड ड्रॉप
  • प्रगति सलाखों
  • चालाक और सरल बाहरी
  • संगत सभी ब्राउज़रों
  • आसानी के लिए व्यवहार मौजूद हैं दृश्य अनुकूलन के
  • कोई बाहरी निर्भरता लेकिन GWT

कांटा और कीड़े/सुविधा प्रस्तावों को प्रस्तुत करने के लिए स्वतंत्र महसूस। आप स्रोत कोड की जांच कर सकते, तो टाइप करें

gradlew gwtcompile devmode 

और यह एक पूरी तरह कार्यात्मक सैंडबॉक्स (सर्वर साइड वास्तविक फ़ाइल की बचत के साथ काम करना चाहिए)

6

मैंने पहले इस उपकरण का उपयोग किया है शुरू कर देंगे मिलती है:

http://code.google.com/p/gwt-fileapi/

अन्य सुझाव यहाँ के विपरीत, न केवल यह अपलोड प्रगति दिखाने के लिए सही API देता है, यह भी मीटर का चयन करके बैच अपलोड करने की क्षमता देता है कई फाइलें, और यह ड्रैग और ड्रॉप समर्थन भी देती है। इसमें एचटीएमएल 5 फॉलबैक तंत्र भी है।

मुझे gwt-fileap के साथ बहुत अच्छा भाग्य मिला है। हाल ही में यह Firefox 7 और 8 में तोड़ दिया और मैं यह करने के लिए इस पैच लागू करने के लिए किया था - लेकिन अन्यथा यह वास्तव में अच्छा काम करता है:

@@ -57,26 +57,33 @@ 

    /** 
     * gets the filename 
-  * 
+  * 
     * @return the filename 
     */ 
    public final native String getFileName() /*-{ 
-  return this.fileName; 
+  if(this.name) 
+     return this.name; 
+   else 
+     return this.fileName; 
+ 
    }-*/; 

    /** 
     * gets the file size in bytes 
-  * 
+  * 
     * @return the file size in bytes 
     */ 
    public final native int getFileSize() /*-{ 
-  return this.fileSize; 
+  if(this.size) 
+     return this.size; 
+   else 
+     return this.fileSize; 
    }-*/; 

    /** 
     * gets the MIME type of the file, may be null if the browser cannot detect 
     * the type 

मैं भी http://code.google.com/p/gwt-fileapi/source/browse/trunk/gwt-fileapi/src/com/gwtpro/html5/fileapi/Html5FileApi.gwt.xml निम्न पंक्तियां जोड़ें पड़ा - इन पंक्तियों का वर्णन कैसे वापस आने तंत्र काम करता है। यदि आप एचटीएमएल 5 गायब होने पर नीचे दिखाए गए SWFUploader कार्यान्वयन पर अपना कोड वापस आना चाहते हैं तो आप कुछ ऐसा ही कर सकते हैं।

public interface FileUpload { 
    public void uploadFiles(); 
    public Widget getWidget(); 
    public void initialize(Grid updateTable, Uploader uploader, String url, boolean createDropHandler); 
    public void setDisabled(boolean b); 
    public void readyToPaint(); 
    public void reset(); 

} 

निम्नलिखित इंटरफ़ेस का gwt-fileapi दिया गया है::

यह इंटरफ़ेस है कि अमूर्त का वर्णन करता है:

<define-property name="fileapi.support" values="yes,no" /> 

    <property-provider name="fileapi.support"><![CDATA[ 
        var input=document.createElement('input'); 
        input.setAttribute('type','file'); 
        return input.files==null?'no':'yes'; 
    ]]></property-provider> 


    <replace-with 
      class="com.gwtpro.html5.fileapi.client.ui.FileInput.FileInputImplHtml5"> 
      <when-type-is 
        class="com.gwtpro.html5.fileapi.client.ui.FileInput.FileInputImpl" /> 
      <when-property-is name="fileapi.support" value="yes" /> 
      <any> 
        <when-property-is name="user.agent" value="ie8" /> 
        <when-property-is name="user.agent" value="safari" /> 
        <when-property-is name="user.agent" value="gecko1_8" /> 
        <when-property-is name="user.agent" value="opera" /> 
        <when-property-is name="user.agent" value="chrome" /> 
      </any> 
    </replace-with> 

यह कैसे मैं अपने आवेदन में इसका इस्तेमाल है

package com.hierarchycm.gxt.client.fileUpload; 

import com.google.gwt.core.client.JsArray; 
import com.google.gwt.event.dom.client.ChangeEvent; 
import com.google.gwt.event.dom.client.ChangeHandler; 
import com.google.gwt.http.client.RequestException; 
import com.google.gwt.http.client.Response; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.Grid; 
import com.google.gwt.user.client.ui.RootPanel; 
import com.google.gwt.user.client.ui.Widget; 
import com.gwtpro.html5.fileapi.client.FileApiSupport; 
import com.gwtpro.html5.fileapi.client.drop.DropHandler; 
import com.gwtpro.html5.fileapi.client.file.File; 
import com.gwtpro.html5.fileapi.client.file.FileEvent; 
import com.gwtpro.html5.fileapi.client.file.FileEvent.FileEventHandler; 
import com.gwtpro.html5.fileapi.client.ui.FileInput; 
import com.gwtpro.html5.fileapi.client.upload.UploadRequest; 
import com.gwtpro.html5.fileapi.client.upload.UploadRequestBuilder; 
import com.gwtpro.html5.fileapi.client.upload.UploadRequestCallback; 

public class FileUploadHtmlImpl extends FileInput implements FileUpload { 

    private Grid uploadTable; 
    int currentFile =0; 
    String url; 
    File[] files; 
    UploadRequestBuilder fileUploader; 
    Uploader uploader; 

    public FileUploadHtmlImpl() { 

    } 

    FileUploadHtmlImpl(Grid updateTable, Uploader uploader, String url) { 
     this(updateTable, uploader, url, true); 
    } 

    FileUploadHtmlImpl(Grid updateTable, Uploader uploader, String url, boolean createDropHandler) { 
     initialize(updateTable, uploader, url, createDropHandler); 
     //this.setCallback(getMyCallback()); 
    } 

    public void initialize(Grid updateTable, Uploader uploader, String url, boolean createDropHandler){ 
     this.url = url; 
     this.uploadTable = updateTable; 
     this.uploader = uploader; 
     this.setAllowMultipleFiles(true); 
     this.addChangeHandler(new ChangeHandler() { 
       @Override 
       public void onChange(ChangeEvent event) { 
        addFiles(FileUploadHtmlImpl.this.getFiles()); 
        uploadFiles(); 
       } 
      }); 

     if (createDropHandler) { 
      createDropHandler(); 
     } 
    } 

    private File[] jsArrToArr (JsArray<File> ipFiles) { 

     File [] result = new File [ipFiles.length()];  
     for (int i = 0; i < ipFiles.length(); ++i) { 
      result[i] = ipFiles.get(i); 
     } 
     return result; 
    } 

    private UploadRequestCallback getMyCallback() { 
     return new UploadRequestCallback() { 

      @Override 
      public void onError(UploadRequest request, Throwable exception) { 
       uploadTable.setText(currentFile + 1, 2, "failed: " + exception.getMessage()); 
       uploadNextFile(currentFile + 1); 
      } 

      @Override 
      public void onResponseReceived(UploadRequest request, Response response) { 
       uploadTable.setText(currentFile + 1, 2, "success: " + response.getText()); 
       uploadNextFile(currentFile + 1); 

       //If we just finished uploading do your thing 
       if (currentFile == files.length) { 
        setDisabled(false); 
        uploader.uploadDoneEventHandler(); 
       } 
      } 

      @Override 
      public void onUploadProgress(UploadRequest request, int bytesUploaded) { 
       uploadTable.setText(currentFile + 1, 2, bytesUploaded + ""); 
      } 
     }; 
    } 

    public void createDropHandler() { 
      RootPanel rootPanel = RootPanel.get(); 
      DropHandler dropHandler = new DropHandler(rootPanel); 
      this.fileUploader = new UploadRequestBuilder(url); 
      this.fileUploader.setCallback(getMyCallback()); 
      dropHandler.addFileEventHandler(new FileEventHandler() { 

       @Override 
       public void onFiles(FileEvent event) { 
        addFiles(jsArrToArr(event.getFiles())); 
        uploadFiles(); 
       } 
      }); 
    } 

    private void addFiles (File[] ipFiles) { 
      files = ipFiles; 
      uploadTable.clear(); 
      uploadTable.resize(files.length + 1, 3); 
      uploadTable.setText(0, 0, "File name"); 
      uploadTable.setText(0, 1, "File size"); 
      uploadTable.setText(0, 2, "Progress"); 
      for (int i = 0; i < files.length; ++i) {     
       uploadTable.setText(i + 1, 0, files[i].getFileName());       
       uploadTable.setText(i + 1, 1, files[i].getFileSize() + ""); 
       uploadTable.setText(i + 1, 2, ""); 
      } 
    } 

    public void uploadNextFile(int index) { 
      for (String paramName : uploader.getPostParams().keySet()) { 
       fileUploader.setHeader(paramName, uploader.getPostParams().get(paramName));          
      } 

      currentFile = index; 
      this.setDisabled(true); 
      if (index < this.files.length) { 
       try { 
        this.fileUploader.setHeader("itemName", files[currentFile].getFileName()); 
        this.fileUploader.sendFile(files[currentFile]); 
       } catch (RequestException e) { 
        this.uploadTable.setText(index + 1, 2, "failed: " + e.getMessage()); 
        uploadNextFile(index + 1); 
       } 
      } 


    } 

    public void uploadFiles() { 
     uploadNextFile(0); 
    } 

    @Override 
    public Widget getWidget() { 
     return this; 
    } 

    @Override 
    public void readyToPaint() { 
     //no need to do anything - already painted for non swf 
    } 

    @Override 
    public void reset() { 
     // TODO Auto-generated method stub 

    } 

    private void showCapabilities() { 
     RootPanel 
       .get("status") 
       .getElement() 
       .setInnerHTML(
         "Drag and Drop Support: " 
           + (FileApiSupport.isDragDropSupported() ? "Yes" 
             : "No") 
           + "<br/>HTTPXmlRequest Level 2: " 
           + (FileApiSupport.isHttpXmlRequestLevel2() ? "Yes" 
             : "No") 
           + "<br/>File input supports multiple files: " 
           + (FileApiSupport 
             .isMultipleFileInputSupported() ? "Yes" 
             : "No")+"<br/><br/>"); 
    } 

} 

यह SWFUpload http://code.google.com/p/swfupload-gwt/ उसी के कार्यान्वयन है इंटरफ़ेस:

package com.hierarchycm.gxt.client.fileUpload; 

import java.util.HashMap; 

import org.swfupload.client.File; 
import org.swfupload.client.SWFUpload; 
import org.swfupload.client.UploadBuilder; 
import org.swfupload.client.SWFUpload.ButtonAction; 
import org.swfupload.client.SWFUpload.ButtonCursor; 
import org.swfupload.client.event.DialogStartHandler; 
import org.swfupload.client.event.FileDialogCompleteHandler; 
import org.swfupload.client.event.FileQueuedHandler; 
import org.swfupload.client.event.UploadCompleteHandler; 
import org.swfupload.client.event.UploadErrorHandler; 
import org.swfupload.client.event.UploadProgressHandler; 
import org.swfupload.client.event.UploadSuccessHandler; 
import org.swfupload.client.event.FileDialogCompleteHandler.FileDialogCompleteEvent; 
import org.swfupload.client.event.FileQueuedHandler.FileQueuedEvent; 
import org.swfupload.client.event.UploadCompleteHandler.UploadCompleteEvent; 
import org.swfupload.client.event.UploadErrorHandler.UploadErrorEvent; 
import org.swfupload.client.event.UploadProgressHandler.UploadProgressEvent; 
import org.swfupload.client.event.UploadSuccessHandler.UploadSuccessEvent; 

import com.extjs.gxt.ui.client.widget.form.TextArea; 
import com.google.gwt.core.client.GWT; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.Grid; 

public class SwfUploadUtil { 

    HashMap<String, Integer> filenameRowHm = new HashMap<String, Integer>(); 

    private boolean resetIssued; 

    SWFUpload swfUpload = null; 
    private HashMap <String, File> files = new HashMap<String, File>();  
    int tableRow = 5; 
    Uploader uploader = null; 
    private Grid updateTable; 
    private String divName; 
    private String url; 

    synchronized private void removeFile(String id) { 
     files.remove(id); 
    }  

    public SwfUploadUtil(Uploader uploader, Grid updateTable, String divName, String url){ 
     reset(); 
     this.uploader = uploader; 
     this.updateTable = updateTable; 
     this.divName = divName; 
     this.url = url; 

     this.swfUpload = loadSWFUpload(); 
     updateTable.resize(5, 5); 
     updateTable.setText(2, 0, "Upload URL:"); 
     updateTable.setText(2, 1, url);   
     updateTable.setText(4, 0, "File Name"); 
     updateTable.setText(4, 1, "Bytes In"); 
     updateTable.setText(4, 2, "Status"); 
     updateTable.setText(4, 3, "File Size"); 
     updateTable.setText(4, 4, "Server response"); 

    } 


    public SWFUpload loadSWFUpload() { 

     this.updateTable = updateTable; 

     if (swfUpload == null) {   
      final UploadBuilder builder1 = new UploadBuilder(); 
      builder1.setHTTPSuccessCodes(200, 201); 
      builder1.setFileTypes("*.webm;*.asf;*.wma;*.wmv;*.avi;*.flv;*.swf;*.mpg;*.mpeg;*.mp4;*.mov;*.m4v;*.aac;*.mp3;*.wav;*.png;*.jpg;*.jpeg;*.gif"); 
      builder1.setFileTypesDescription("Images, Video & Sound"); 

      builder1.setButtonPlaceholderID(divName); 
      builder1.setButtonImageURL("./images/XPButtonUploadText_61x22.png"); 
      builder1.setButtonCursor(ButtonCursor.HAND); 
      builder1.setButtonWidth(61); 
      builder1.setButtonHeight(22); 
      builder1.setButtonAction(ButtonAction.SELECT_FILES); 

      builder1.setUploadProgressHandler(new UploadProgressHandler() { 

       public void onUploadProgress(UploadProgressEvent e) { 

        File f = e.getFile();     
        updateTable.setText(getFilenameRow(f), 2, String.valueOf(e.getBytesComplete())); 

       } 
      }); 

      builder1.setUploadSuccessHandler(new UploadSuccessHandler() { 
       public void onUploadSuccess(UploadSuccessEvent e) { 
        File f = e.getFile(); 
        updateTable.setText(getFilenameRow(f), 4, e.getServerData()); 
       } 
      }); 

      builder1.setUploadErrorHandler(new UploadErrorHandler() { 
       public void onUploadError(UploadErrorEvent e) { 
        File ff = e.getFile(); 
        String message = e.getMessage(); 
        if (message == null || message.trim().length() == 0) { 
         message = "upload failed"; 
        }    
        updateTable.setText(getFilenameRow(ff), 2, String.valueOf(message)); 

        removeFile(ff.getId()); 
        if (files.values().size() > 0) { 
         ff = files.values().iterator().next(); 
         updateTable.setText(getFilenameRow(ff), 2, "Started"); 
         swfUpload.startUpload(ff.getId());      
        } 
       } 
      }); 

      builder1.setUploadURL(url); 

      builder1.setDialogStartHandler(new DialogStartHandler() { 
       @Override 
       public void onDialogStart() { 
        if(resetIssued == true) { 
         filenameRowHm.clear(); 
         resetIssued = false; 
        }    
       }     
      } 
      ); 

      builder1.setUploadCompleteHandler(new UploadCompleteHandler() { 
       public void onUploadComplete(UploadCompleteEvent e) { 
        File f = e.getFile(); 

        updateTable.setText(getFilenameRow(f), 2, "Done"); 

        removeFile(f.getId()); 
        if (files.values().size() > 0) { 
         File ff = files.values().iterator().next(); 

         updateTable.setText(getFilenameRow(ff), 2, "Started"); 
         swfUpload.startUpload(ff.getId()); 
        } else {      
         uploader.uploadDoneEventHandler(); 
        } 
       } 
      }); 

      builder1.setFileQueuedHandler(new FileQueuedHandler() { 
       public void onFileQueued(FileQueuedEvent event) { 

        File f = event.getFile();     
        updateTable.setText(getFilenameRow(f), 2, "Queued");      
        files.put(f.getId(), f); 
       } 
      }); 

      builder1.setFileDialogCompleteHandler(new FileDialogCompleteHandler() { 
       public void onFileDialogComplete(FileDialogCompleteEvent e) {             



        updateTable.setText(2, 0, "Number of files"); 
        updateTable.setText(2, 1, String.valueOf(files.values().size())); 

        for(File f : files.values()) { 
         getFilenameRow(f); 
        } 

        if (files.values().size() > 0) { 

         for (String paramName : uploader.getPostParams().keySet()) { 
          swfUpload.addPostParam(paramName,uploader.getPostParams().get(paramName));       
         } 
        } 
       } 
      }); 
      swfUpload = builder1.build(); 

     } 

     return swfUpload; 

    } 

    public int getFilenameRow (File f) { 
     Integer filenamerow = filenameRowHm.get(f.getId()); 

     if (filenamerow == null) { 
      updateTable.resize(tableRow+1, 5); 
      filenamerow = new Integer(tableRow++); 
      updateTable.setText(filenamerow.intValue(), 0, f.getName()); 
      updateTable.setText(filenamerow.intValue(), 3, String.valueOf(f.getSize())); 
      //updateTable.setText(filenamerow.intValue(), 3, String.valueOf(f)); 
      filenameRowHm.put(f.getId(), filenamerow); 
     } 

     return filenamerow.intValue(); 
    } 

    public void startUpload() { 
     uploader.uploadStartedEventHandler(); 
     swfUpload.startUpload(); 
    } 

    public void setDisabled(boolean disabled) { 
     swfUpload.setButtonDisabled(disabled); 


    } 

    public void reset() { 
     // TODO Auto-generated method stub 
     resetIssued = true; 
    } 
} 
संबंधित मुद्दे