FileReference.load()没有填充FileReference.data

时间:2009-11-11 01:57:50

标签: flex filereference

我正在尝试使用FileReference对象的load方法加载数据并使用它来显示所选图像的缩略图。

但是,在致电fr.load()后,fr.data仍为null

我在Windows 7上使用Flex Builder 3.0.2,使用Flex SDK 3.4和Flash Player 10 Debug。如果我在Eclipse的监视变量列表中评估fr.load(),则会在读取"No such variable: load."

时出错

任何人都知道为什么会这样吗?

5 个答案:

答案 0 :(得分:2)

您在等待load()完成吗?尝试添加一个EventListener来监听要完成的负载。

FileReference docs

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

您编写的handleLoad函数可以通过e.target.data

获取数据

答案 1 :(得分:1)

编辑:这仅适用于FP9。


你确定你使用的是合适的班级吗? FileReference没有加载方法或数据属性。我猜你指的是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);
}

答案 2 :(得分:1)

我在FileReference类和load()函数中遇到了同样的问题。问题可以通过这种方式解决:

  1. 打开“Flex Build Path”选项卡。
  2. 展开“Flex 3”,选择“playerglobal.swc”并点击“删除”。
  3. 请注意“Flex 3 - ”中的目录路径(在我的系统上是/ Applications / Adob​​e Flex Builder 3 Plug-in / sdks / 3.2.0)。
  4. 点击“添加SWC”并导航到该路径,然后深入到frameworks / libs / player / 10,选择playerglobal.swc。
  5. 展开“playerglobal.swc”,双击“链接类型”并将其更改为“外部”。
  6. 打开“Flex编译器”标签
  7. 在“HTML wrapper”中,将“Require Flash Player version”更改为10.0.0。

答案 3 :(得分:0)

您是否将任何内容传递给fileReference。

例如来自数据网格

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

_refUploadFile.load();

答案 4 :(得分:0)

您必须先执行以下操作:

fileReference.cancel();