FileReference.load () не заполняет FileReference.data - PullRequest
2 голосов
/ 11 ноября 2009

Я пытаюсь использовать метод load объекта FileReference для загрузки данных и использовать его для отображения эскиза выбранного изображения.

Однако после вызова fr.load(), fr.data остается null.

Я использую Flex Builder 3.0.2 в Windows 7 с Flex SDK 3.4 и Flash Player 10 Debug. Если я оцениваю fr.load() в списке переменных наблюдения Eclipse, я получаю сообщение об ошибке "No such variable: load."

Кто-нибудь знает, почему это происходит?

Ответы [ 5 ]

2 голосов
/ 11 ноября 2009

Вы ждете завершения load()? Попробуйте добавить EventListener для прослушивания загрузки, которая будет завершена.

FileReference docs

fr.addEventListener(Event.COMPLETE, function(e:Event):void {
                                        handleLoad(e);
                                    });

Функция handleLoad, которую вы пишете, может затем получить данные через e.target.data

1 голос
/ 09 апреля 2010

У меня была такая же проблема с классом FileReference и функцией load (). Проблема может быть решена следующим образом:

  1. Откройте вкладку «Путь сборки Flex».
  2. Разверните «Flex 3», выберите «playerglobal.swc» и нажмите «Удалить».
  3. Запомните путь к каталогу в «Flex 3 -» (в моей системе это / Applications / Плагин Adobe Flex Builder 3 / sdks / 3.2.0).
  4. Нажмите «Добавить SWC» и перейдите к этому пути, а затем глубже в frameworks / libs / player / 10 выберите playerglobal.swc.
  5. Разверните «playerglobal.swc», дважды щелкните «Тип ссылки» и измените его на «Внешний».
  6. Открыть вкладку «Flex Compiler»
  7. В «Обертке HTML» измените «Требуется версия Flash Player» на 10.0.0.
1 голос
/ 11 ноября 2009

РЕДАКТИРОВАТЬ: Это применимо только к FP9.


Вы уверены, что используете правильный класс? FileReference не имеет метода load или свойства data . Я предполагаю, что вы имеете в виду класс URLLoader - он имеет оба, и это то, что вы должны использовать для загрузки данных. FileReference класс для загрузки файлов с сервера на компьютер пользователя (не в SWF) и загрузки файлов с компьютера пользователя на сервер.

Используйте класс URLLoader для загрузки данных в SWF и класс Loader для загрузки других SWF-файлов и изображений в SWF-файл. Класс Loader имеет свойство content, аналогичное свойству data URLLoader, которое будет содержать загруженный контент. Методы load() обоих этих классов являются асинхронными (возвращается без ожидания завершения загрузки) и, следовательно, как отметил @dustmachine, вы можете получить доступ к загруженным данным / контенту только после запуска Event.COMPLETE.

var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onLoad);
urlLoader.load(new URLRequest(theURL));

private function onLoad(e:Event):void
{
  var urlLoader:URLLoader = URLLoader(e.target);
  trace(urlLoader.data);
}
0 голосов
/ 10 декабря 2013

Сначала вы должны сделать следующее:

fileReference.cancel();
0 голосов
/ 11 ноября 2009

Вы что-нибудь передали в файл Reference.

например, из таблицы данных

var listFiles:DataGrid = new DataGrid();
var _refUploadFile:FileReference = new FileReference();                 
_refUploadFile = listFiles.selectedItem.file;   

_refUploadFile.load();
...