2010-02-15 8 views
0

Je suis novice en matière de flexion et j'essaie de développer une application pour télécharger plusieurs fichiers image avec une barre de progression pour chaque téléchargement. La grille de données contient le nom du fichier et la barre de progression de chaque fichier lorsque nous sélectionnons et ajoutons un fichier. Lorsque le téléchargement de fichiers progresse, il doit également apparaître dans la barre de progression. Je l'ai utilisé filerefencelist pour maintenir la collection de fichiers et lorsque je tente de télécharger des fichiers, il génère une erreur "objet nul"Générer la barre de progression en flex

Mon code:

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);  
     } 


Quelqu'un peut-il me aider avec la solution à ce problème?

Répondre

0

Où remplissez-vous _arrUploadFiles []?

Dans votre code ci-dessus, vous créez un objet, puis écrasez la référence. Peut-être que c'est la source de votre erreur. Essayez ceci ...

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

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

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

Je ne vois pas aussi nulle part dans votre code ci-dessus où vous définissez le gestionnaire d'événements pour mettre à jour une barre de progression, ou lorsque la barre de progression est définie.

Peut-être que je suis hors piste, auquel cas vous aurez besoin de poster un peu plus de code.

0

Il y a des problèmes évidents dans votre code. Vous devriez probablement aborder ces premiers. Commencez ici:

Dans ces deux lignes, vous avez créé une nouvelle FileReference puis immédiatement défaussé et avez remplacé par _arrUploadFiles[currentFileIndex]. En outre, si le code que vous avez collé est tout le code pertinent (il semble incomplet), alors vous n'allez pas avoir l'effet que vous espérez car la valeur de _arrUploadFiles[currentFileIndex] va être undefined (comme aucune valeur n'a été défini dans _arrUploadFiles à cet index pour le moment). Une fois que vous avez résolu certains des problèmes élémentaires, lisez la section Flex documentation on FileReference. Il y a quelques exemples dans ces documents que vous devriez étudier attentivement. Notez comment la méthode FileReference.browse() est utilisée pour ouvrir une boîte de dialogue de fichier qui permet à l'utilisateur de choisir le (s) fichier (s) à télécharger. Il est inutile d'appeler upload() jusqu'à ce que vous ayez rempli le FileReference de cette manière.