2009-11-11 149 views
2

我想使用FileReference对象的加载方法加载数据并使用它来显示所选图像的缩略图。FileReference.load()没有填充FileReference.data

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

我在使用Flex SDK 3.4和Flash Player 10 Debug的Windows 7上使用Flex Builder 3.0.2。如果我在Eclipse的观察变量列表中评估fr.load(),我会看到一条错误消息"No such variable: load."

任何人都知道为什么会发生这种情况?

+0

你导入器flash.net.FileReference – Treby 2009-11-11 02:04:04

+0

+1因为我从中学到了这个问题的东西 – Amarghosh 2009-11-11 14:40:12

回答

2

你等待load()完成?尝试添加一个EventListener来侦听加载完成。

FileReference docs

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

,你写那么可以通过e.target.data

+0

这是问题,由于我早知道早些时候,我应该等待事件,但忘记了,再次感谢。 – jeffcook2150 2009-11-11 14:18:11

0

你传递了​​什么给fileReference。

e.g从DataGrid

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

_refUploadFile.load(); 
1

编辑获得数据的handleLoad功能:这是只适用于FP9。


您确定您使用的是正确的班级吗? FileReference没有加载方法或数据属性。我想你是指URLLoader类 - 它确实有这两个,这就是你应该用来加载数据。 FileReference类用于将文件从服务器下载到用户的机器(而不是SWF),并将用户机器上的文件上传到服务器。

使用URLLoader类将数据加载到SWF和Loader类,以将其他SWF和图像加载到SWF。 Loader类有content属性类似于URLLoaderdata属性,该属性将保存加载的内容。这两个类的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

感谢您的回答,但是使用ActionScript 3和Flash Player 10,FileReference确实有一个load()方法(将文件的内容加载到ByteArray中)和一个数据属性(其中包含前述的ByteArray)。不过,我必须升级并重新配置Flex Builder才能看到这些内容。 – jeffcook2150 2009-11-11 14:17:19

+0

感谢您纠正我 - 尚未完成FP 10特定的东西。 – Amarghosh 2009-11-11 14:32:40

1

我有与FileReference类和load()函数相同的问题。问题可以通过这种方式解决:

  1. 打开“Flex构建路径”选项卡。
  2. 展开“Flex 3”,选择“playerglobal.swc”并单击“删除”。
  3. 请注意“Flex 3 - ”(在我的系统上是/ Applications/Adob​​e Flex Builder 3 Plug-in/sdks/3.2.0)中的目录路径。
  4. 单击“添加SWC”并导航到该路径,然后深入框架/ libs/player/10,选择playerglobal.swc。
  5. 展开“playerglobal。swc“,双击”Link Type“并将其更改为”External“
  6. 打开”Flex编译器“选项卡
  7. 在”HTML包装器“中,将”需要Flash Player版本“更改为10.0.0。
0

你必须做到以下几点第一:。

fileReference.cancel();