FlashCS3.0 FileReference 文件操作类的用法详解(1)

更新时间:2023-05-30 12:07:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


类 public class FileReference
继承 FileReference EventDispatcher Object
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。 操作系统对话框会提示用户选择要上载的文件或用于下载的位置。 每个 FileReference 对象都引用用户磁盘上的一个文件并且具有一些属性,这些属性包含有关文件大小、类型、名称、创建日期、修改日期和创建者类型(仅限 Macintosh)的信息。
FileReference 实例的创建方法有两种:
当将 new 运算符与 FileReference 构造函数一起使用时:var myFileReference = new FileReference();
当调用 FileReferenceList.browse() 方法时,该方法将创建一个 FileReference 对象数组。
在上载操作期间,FileReference 对象的所有属性通过调用 FileReference.browse() 或 FileReferenceList.browse() 方法来填充。 在下载操作期间,name 属性在调度 select 事件时得到填充,所有其它属性在调度 complete 事件时得到填充。
browse() 方法打开一个操作系统对话框,提示用户选择要上载的文件。 FileReference.browse() 方法允许用户选择一个文件;FileReferenceList.browse() 方法允许用户选择多个文件。 成功调用 browse() 方法后,调用 FileReference.upload() 方法以每次上载一个文件。 FileReference.download() 方法提示用户提供文件的保存位置并开始从远程 URL 进行下载。
FileReference 类和 FileReferenceList 类不允许为 browse() 或 download() 生成的对话框设置默认文件位置。 对话框中显示的默认位置是最近浏览过的文件夹(如果可以确定该位置)或桌面。 这些类不允许对已传输的文件进行读取或写入。 它们也不允许启动上载或下载的 SWF 文件访问已上载或下载的文件或用户磁盘上文件的位置。
FileReference 类和 FileReferenceList 类也不提供用于身份验证的方法。 通过要求身份验证的服务器,您可以使用 Flash ? Player 浏览器插件下载文件,但上载(在所有播放器上)和下载(在独立播放器或外部播放器上)将失败。 对 FileReference 事件进行侦听可确定操作是否成功完成,并进行错误处理。
对于上载和下载操作,SWF 文件只能访问自己的域(包括跨域策略文件指定的任何域)内的文件。 如果启动上载或下载的 SWF 与文件服务器不在相同的域中,应将策略文件放到文件服务器上。
在对 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法执行调用时,
SWF 文件回放将在用于 Linux 和 Mac OS X 10.1 及其早期版本操作系统的独立播放器和外部播放器上暂停。
如果未指定任何参数,则 Flash Player 会向服务器端脚本发送以下范例 HTTP POST 请求:
POST /handler.cfm HTTP/1.1

Accept: text/* Content-Type: multipart/form-data; boundary=----------Ij5ae0ae0KM7GI3KM7ei4cH2ei4gL6 User-Agent: Shockwave Flash Host: Content-Length: 421 Connection: Keep-Alive Cache-Control: no-cache ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“Filename“ MyFile.jpg ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“photo“; filename=“MyFile.jpg“ Content-Type: application/octet-stream FileDataHere ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“Upload“ Submit Query ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
如果用户指定参数 “api_sig“、“api_key“ 和 “auth_token“,Flash Player 将发送以下 HTTP POST 请求:
POST /handler.cfm HTTP/1.1 Accept: text/* Content-Type: multipart/form-data; boundary=----------Ij5ae0ae0KM7GI3KM7ei4cH2ei4gL6 User-Agent: Shockwave Flash Host: Content-Length: 421 Connection: Keep-Alive Cache-Control: no-cache ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“Filename“ MyFile.jpg ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“api_sig“ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“api_key“ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“auth_token“ XXXXXXXXXXXXXXXXXXXXXX ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“photo“; filename=“MyFile.jpg“ Content-Type: application/octet-stream FileDataHere ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7 Content-Disposition: form-data; name=“Upload“ Submit Query ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
FileReferenceList 处理文件上载和下载
--------------------------------------------------------------------------------
公共 属性
隐藏继承的公共属性
显示继承的公共属性
属性 定义方
constructor : Object
对类对象或给定对象实例的构造函数的引用。 Object
creationDate : Date
[read-only] 本地磁盘上文件的创建日期。 FileReference
creator : String
[read-only] 文件的 Macintosh 创建者类型。 FileReference
modificationDate : Date
[read-only] 本地磁盘上文件的上一次修改日期。 FileReference
name : String
[read-only] 本地磁盘上的文件的名称。 FileReference
prototype : Object
[static] 对类或函数对象的原型对象的引用。 Object
size : uint
[read-only] 本地磁盘上文件的大小(以字节为单位)。 FileReference
type : String
[read-only] 文件类型。 FileReference
公共 方法
隐藏继承的公共方法
显示继承的公共方法
方法
定义方
FileReference()
创建新的 FileReference 对象。 FileReference
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priorit

y:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 EventDispatcher
browse(typeFilter:Array = null):Boolean
显示一个文件浏览对话框,让用户选择要上载的文件。 FileReference
cancel():void
取消正在对该 FileReference 对象执行的任何上载或下载操作。 FileReference
dispatchEvent(event:Event):Boolean
将事件调度到事件流中。 EventDispatcher
download(request:URLRequest, defaultFileName:String = null):void
打开对话框,以允许用户从远程服务器下载文件。 FileReference
hasEventListener(type:String):Boolean
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 EventDispatcher
hasOwnProperty(name:String):Boolean
指示对象是否已经定义了指定的属性。 Object
isPrototypeOf(theClass:Object):Boolean
指示 Object 类的实例是否在指定为参数的对象的原型链中。 Object
propertyIsEnumerable(name:String):Boolean
指示指定的属性是否存在、是否可枚举。 Object
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。 EventDispatcher
setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
设置循环操作动态属性的可用性。 Object
toString():String
返回指定对象的字符串表示形式。 Object
upload(request:URLRequest, uploadDataFieldName:String = “Filedata“, testUpload:Boolean = false):void
开始将用户选择的文件上载到远程服务器。 FileReference
valueOf():Object
返回指定对象的原始值。 Object
willTrigger(type:String):Boolean
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 EventDispatcher
事件
隐藏继承的事件
显示继承的事件
事件 摘要 定义方
activate Flash Player 获得操作系统焦点并变为活动状态时调度。 EventDispatcher
cancel 当用户通过文件浏览对话框取消文件上载或下载时调度。 FileReference
complete 当下载操作完成或上载操作生成 HTTP 状态代码 200 时调度。 FileReference
deactivate Flash Player 失去操作系统焦点并变为非活动状态时调度。 EventDispatcher
httpStatus 当上载失败并且存在可用来描述失败的 HTTP 状态代码时调度。 FileReference
ioError 当上载或下载失败时调度。 FileReference
open 当上载或下载操作开始时调度。 FileReference
progress 在文件上载或下载操作期间定期调度。 FileReference
securityEr
ror 当对 FileReference.upload() 或 FileReference.download() 方法的调用尝试将文件上载到调用方安全沙箱外部的服务器,或是从调用方安全沙箱外部的服务器上下载文件时进行调度。 FileReference
select 当用户从文件浏览

对话框选择要上载或下载的文件时调度。 FileReference
uploadCompleteData 成功上载并从服务器接收数据之后调度。 FileReference
属性详细信息
creationDate 属性
creationDate:Date [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
本地磁盘上文件的创建日期。 如果未填充 FileReference 对象,则为获得此属性的值而执行的调用将返回 null。
实现
public function get creationDate():Date
引发
IllegalOperationError — 若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,creationDate 属性的值为 null。
IOError — 若不能访问文件信息,则会引发一个异常,同时显示一条信息,指出发生文件 I/O 错误。
另请参见
FileReference.browse()
creator 属性
creator:String [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
文件的 Macintosh 创建者类型。 在 Windows 上,此属性为 null。 如果未填充 FileReference 对象,则为获得此属性的值而执行的调用将返回 null。
实现
public function get creator():String
引发
IllegalOperationError — 在 Macintosh 系统上,若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,creator 属性的值为 null。
另请参见
FileReference.browse()
处理文件上载和下载
modificationDate 属性
modificationDate:Date [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
本地磁盘上文件的上一次修改日期。 如果未填充 FileReference 对象,则为获得此属性的值而执行的调用将返回 null。
实现
public function get modificationDate():Date
引发
IllegalOperationError — 若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,modificationDate 属性的值为 null。
IOError — 若不能访问文件信息,则会引发一个异常,同时显示一条信息,指出发生文件 I/O 错误。
另请参见
FileReference.browse()
name 属性
name:String [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
本地磁盘上的文件的名称。 如果未填充 FileReference 对象,则为获得此属性的值而执行的调用将返回 null。
F
ileReference 对象的所有属性都通过调用 browse() 方法进行填充。 与其它 FileReference 属性不同,如果调用 download() 方法,则在调度 select 事件时将填充 name 属性。
实现
public function get name()

:String
引发
IllegalOperationError — 若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,name 属性的值为 null。
另请参见
FileReference.browse()
size 属性
size:uint [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
本地磁盘上文件的大小(以字节为单位)。 如果 size 为 0,将引发异常。
实现
public function get size():uint
引发
IllegalOperationError — 若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,size 属性的值为 0。
IOError — 若无法打开或读取文件,或者在访问文件时遇到类似错误,将引发异常,同时显示一条信息,指明发生文件 I/O 错误。 此时,size 属性的值为 0。
另请参见
FileReference.browse()
type 属性
type:String [read-only]
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
文件类型。 在 Windows 上,此属性是文件扩展名。 在 Macintosh 上,此属性是由四个字符组成的文件类型。 如果未填充 FileReference 对象,则为获得此属性的值而执行的调用将返回 null。
实现
public function get type():String
引发
IllegalOperationError — 若 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法未能成功调用,将引发异常,同时显示一条信息,指出函数的调用顺序不正确或先前调用未成功。 此时,type 属性的值为 null。
构造函数详细信息
FileReference () 构造函数
public 函数 FileReference()
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
创建新的 FileReference 对象。 在填充后,FileReference 对象表示用户本地磁盘上的文件。
另请参见
FileReference.browse()
方法详细信息
browse () 方法
public function browse(typeFilter:Array = null):Boolean
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
显示一个文件浏览对话框,让用户选择要上载的文件。 该对话框对于用户的操作系统来说是本机的。 用户可以选择本地计算机上的文件,也可以选择其它系统上的文件,例如,通过 Windows 上的 UNC 路径选择文件。
当调用此方法并且用户成功选择文件时,会使用该文件的属性填充此 FileReference 对象的属性。 以后每次调用 FileRefer
ence.browse() 方法时,FileReference 对象的属性都重置为用户在对话框中选择的文件。 每次只能执行一个 browse() 或 download() 会话(因为每次只能调用一个对话框)。
使用 typeFilter 参数,可决定对话框显示哪些文件。
参数 ty

peFilter:Array (default = null) — 一个 FileFilter 实例数组,用于过滤在对话框中显示的文件。 如果省略此参数,则显示所有文件。 有关详细信息,请参阅 FileFilter 类。
返回 Boolean — 如果参数有效并且打开了文件浏览对话框,则返回 true。 在以下情况下,browse 方法返回 false:未打开对话框;正在进行另一个浏览器会话;使用 typelist 参数,但未能在数组的任一元素中提供描述或扩展名字符串。
事件 select:Event — 当用户从浏览文件选择器成功选择了项目时调度。
cancel:Event — 当用户取消文件上载浏览窗口时调度。
引发 IllegalOperationError — 在以下情况下引发:1) 另一个 FileReference 或 FileReferenceList 浏览会话正在进行中;每次仅能执行一个文件浏览会话。 2) 用户 mms.cfg 文件中的某个设置禁止此操作。
ArgumentError — 如果 typeFilter 数组包含格式不正确的 FileFilter 对象,将引发异常。 有关 FileFilter 对象正确格式的信息,请参阅 FileFilter 类。
另请参见
select event
cancel event
FileReference.download()
FileReferenceList.browse()
处理文件上载和下载
cancel () 方法
public function cancel():void
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
取消正在对该 FileReference 对象执行的任何上载或下载操作。 调用此方法并不会调度 cancel 事件。仅在用户通过退出文件上载或下载对话框来取消操作时,才会调度该事件。
download () 方法
public function download(request:URLRequest, defaultFileName:String = null):void
语言版本 : ActionScript. 3.0
Player 版本 : Flash Player 9
打开对话框,以允许用户从远程服务器下载文件。 虽然 Flash Player 没有限制可上载或下载的文件的大小,但是播放器正式支持的上载或下载文件大小最大为 100 MB。
download() 方法首先打开一个操作系统对话框,让用户输入文件名并在本地计算机上选择用于保存文件的位置。 用户选择了位置并确认下载操作时(例如,单击“保存”)后,开始从远程服务器下载。 侦听器接收事件来指示下载的进度、成功或失败。 为了在调用 download() 后确定对话框和下载操作的状态,ActionScript. 代码必须对 cancel、open、progress 和 complete 等事件进行侦听。
FileReference.upload() 和 FileReference.download() 函数是非阻塞式的。 这些函数在调用它们之后即返回,而不会等待文件传输完成。 此外,若 FileReferenc
e 对象离开作用域,则对该对象尚未完成的上载或下载操作将在它离开作用域后被取消。 只要希望上载或下载操作继续,就应确保将 FileReference 对象保留在作用域中。
成功下载文件之后,将使用本地文件的属性填充 FileReference 对象的属性。 如果下载成功,将调度 com

plete 事件。
每次只能执行一个 browse() 或 download() 会话(因为每次只能调用一个对话框)。
此方法支持使用 HTTP 或 HTTPS 下载任何文件类型。
注意:如果服务器要求用户身份验证,则只有在浏览器中运行的 SWF 文件(即使用浏览器插件或 ActiveX 控件的文件)才可以提供对话框来提示用户输入用户名和密码以进行身份验证,并且只适用于下载。 对于使用插件或 ActiveX 控件进行的上载操作,以及使用独立或外部播放器进行的上载和下载操作,文件传输会失败。
使用此方法时,请考虑 Flash Player 安全模型:
如果执行调用的 SWF 文件在不受信任的本地沙箱中,则不允许进行加载操作。
默认行为是拒绝沙箱之间的访问。 网站可通过添加跨域策略文件来实现对资源的访问。
可以在包含 SWF 内容的 HTML 页中设置 object 和 embed 标签的 allowNetworking 参数,防止 SWF 文件使用此方法。

本文来源:https://www.bwwdw.com/article/hk64.html

Top