2010-02-15 62 views
0

我是flex的新手,我試圖開發一個應用程序,用於上傳多個圖像文件以及每個上傳的進度條。當我們選擇並添加文件時,datagrid保存文件的名稱和每個文件的進度條。當文件上傳有進展時,它也應該反映在進度欄中。我已經使用filerefencelist保存文件的集合,當我嘗試上傳文件它生成錯誤 「空對象」在flex中生成進度條

我的代碼:

private var initDG : ArrayCollection; 
     private var _arrUploadFiles:Array = new Array(); 
     private var currentFile:FileReference; 
     private var currentFileIndex:Number = 0; 
     private var uploadErrors:Array = new Array(); 
     private var _refAddFiles:FileReferenceList = new FileReferenceList(); 

// function in called when upload button is clicked 
     // uploading file to server 
     private function serverFileupload(event:Event):void 
      { 
      if(! __serverSideScriptURL) 
      { 
       Alert.show("Server fileupload URL is missing. Unable to upload."); 
       return; 
      } 


     var request:URLRequest = new URLRequest(); 
     request.url = __serverSideScriptURL; 
     request.method = URLRequestMethod.POST; 
     currentFile = new FileReference(); 
     currentFile = _arrUploadFiles[currentFileIndex]; 

     currentFile.addEventListener(IOErrorEvent.IO_ERROR, uploadIoErrorHandler); 
     currentFile.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler); 

     currentFile.upload(request, "FileUpload", false);  
     } 


誰能幫助我解決這個問題呢?

回答

0

你在哪裏填寫_arrUploadFiles []?

在上面的代碼中新建一個對象,然後覆蓋引用。也許這是你錯誤的根源。試試這個...

currentFile = new FileReference(); 
    _arrUploadFiles[currentFileIndex] = currentFile; 

    currentFile.addEventListener(IOErrorEvent.IO_ERROR, uploadIoErrorHandler); 
    currentFile.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler); 

    currentFile.upload(request, "FileUpload", false); 

我還沒有看到在你的代碼上面的任何地方,你設定的事件處理程序來更新進度條,或設置進度條。

也許我錯了,在這種情況下,您需要發佈更多的代碼。

0

您的代碼中存在一些明顯的問題。你應該首先解決這些問題。從這裏開始:

在這兩條線,你已經創建了一個新的FileReference,然後立即丟棄它,並_arrUploadFiles[currentFileIndex]取而代之。此外,如果您粘貼的代碼是所有相關的代碼(它看起來不完整),那麼您不會達到所期望的效果,因爲_arrUploadFiles[currentFileIndex]的值將爲undefined(因爲沒有值在那個指數中設置在_arrUploadFiles)。

一旦您解決了一些基本問題,請閱讀Flex documentation on FileReference。這些文檔中有一些例子應該仔細研究。請注意如何使用FileReference.browse()方法打開允許用戶選擇應上載哪個文件的文件對話框。在您以這種方式填充FileReference之前,調用upload()毫無意義。