Создание индикатора выполнения в flex - PullRequest
0 голосов
/ 15 февраля 2010

Я новичок в освоении и пытаюсь разработать приложение для загрузки нескольких файлов изображений вместе с индикатором выполнения для каждой загрузки. Сетка данных содержит имя файла и индикатор выполнения для каждого файла, когда мы выбираем и добавляем файл. Когда есть прогресс в загрузке файла, это также должно быть отражено в индикаторе выполнения. Я использовал filerefencelist для хранения коллекции файлов, и при попытке загрузить файлы выдает ошибку «Нулевой объект»

Мой код:

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


Может кто-нибудь помочь мне с решением этой проблемы?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2010

В вашем коде есть очевидные проблемы. Вы должны, вероятно, обратиться к ним в первую очередь. Начните здесь:

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

В этих двух строках вы создали новую FileReference, а затем сразу же удалили ее и заменили на _arrUploadFiles[currentFileIndex]. Кроме того, если код, который вы вставили, представляет собой весь соответствующий код (он кажется неполным), то вы не получите желаемого эффекта, потому что значение _arrUploadFiles[currentFileIndex] будет равно undefined ( поскольку в _arrUploadFiles по этому индексу еще не установлено значение).

Как только вы решите некоторые элементарные проблемы, прочитайте документацию Flex по FileReference . В этих документах есть несколько примеров, которые вы должны внимательно изучить. Обратите внимание, как метод FileReference.browse() используется для открытия диалогового окна файла, которое позволяет пользователю выбрать, какие файлы должны быть загружены. Нет смысла вызывать upload(), пока вы не заполнили FileReference таким образом.

0 голосов
/ 15 февраля 2010

Где вы заполняете _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);  

Я также не вижу нигде в вашем коде выше, где вы устанавливаете обработчик событий для обновления индикатора выполнения или где установлен индикатор выполнения.

Возможно, я не в курсе, и в этом случае вам нужно будет добавить немного больше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...