ndfweb.cn

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


2009-09-01 17:06:57 (6306)


FileReference.download()
FileReference.upload()
httpStatus 事件
事件对象类型: flash.events.HTTPStatusEvent
HTTPStatusEvent.type property = flash.events.HTTPStatusEvent.HTTP_STATUS
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
当上载失败并且存在可用来描述失败的 HTTP 状态代码时调度。 调度 httpStatus 事件之后,将调度 ioError 事件。
仅在上载失败时才调度 httpStatus 事件。 由于 Flash Player 在文件下载期间依赖浏览器的方式,此事件并不适用于下载失败。 如果下载由于 HTTP 错误而失败,则将错误报告为 I/O 错误。
定义 httpStatus 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
status 由服务器返回的 HTTP 状态代码。
target 接收 HTTP 状态代码的网络对象。
另请参见
FileReference.upload()
ioError 事件
事件对象类型: flash.events.IOErrorEvent
IOErrorEvent.type property = flash.events.IOErrorEvent.IO_ERROR
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
当上载或下载失败时调度。 文件传输会失败的原因有:
当播放器正在读取、写入或传输文件时发生输入/输出错误。
SWF 文件尝试将文件上载到要求身份验证(如用户名和密码)的服务器。 在上载期间,Flash Player 不为用户提供输入密码的方法。 如果 SWF 文件尝试将文件上载到要求身份验证的服务器,上载将失败。
SWF 文件尝试在独立播放器或外部播放器中从要求身份验证的服务器下载文件。 在下载期间,独立播放器和外部播放器不提供用户用于输入密码的方法。 如果这些播放器中的 SWF 文件尝试从要求身份验证的服务器下载文件,则下载会失败。 只有在 ActiveX 控件和浏览器插件播放器中,文件下载才有可能成功。
传递到 upload() 方法中的 url 参数的值包含无效协议。 有效协议包括 HTTP 和 HTTPS。
重要提示:只有在浏览器中运行的 Flash 应用程序(即,使用浏览器插件或 ActiveX 控件的应用程序)才可以提供对话框来提示用户输入用户名和密码以进行身份验证,并且只适用于下载。 对于使用插件或 ActiveX 控件进行的上载操作,以及使用独立播放器或外部播放器进行的上载或下载操作,文件传输会失败。
定义 ioError 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 发生输入/输出错误的网络对象。
text 要显示为错误消息的文本。
另请参见
FileReference.download()
FileReference.upload()
open 事件
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.OPEN
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
当上载或下载操作开始时调度。
定义 open 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已打开连接的网络对象。
示例
下面的示例演示 download 事件对象的用法。 要运行此示例,请将 downloadURL.url 属性更改为指向一个实际的域和文件,而不是虚拟的 .com/SomeFile.pdf]http://www.[yourDomain].com/SomeFile.pdf。 您可能还需要编译 SWF 文件,将“本地回放安全性”设置为“只访问网络”,或更新 Flash Player 的安全设置,以允许此文件网络访问。
package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  import flash.net.FileFilter;
  public class FileReference_download extends Sprite {
    * var downloadURL:URLRequest;
    * var fileName:String = “SomeFile.pdf“;
    * var file:FileReference;
    public function FileReference_download() {
      downloadURL = new URLRequest();
      downloadURL.url = “http://www.[yourDomain].com/SomeFile.pdf“;
      file = new FileReference();
      configureListeners(file);
      file.download(downloadURL, fileName);
    }
    * function configureListeners(dispatcher:IEventDispatcher):void {
      dispatcher.addEventListener(Event.CANCEL, cancelHandler);
      dispatcher.addEventListener(Event.COMPLETE, completeHandler);
      dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
      dispatcher.addEventListener(Event.OPEN, openHandler);
      dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
      dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
      dispatcher.addEventListener(Event.SELECT, selectHandler);
    }
    * function cancelHandler(event:Event):void {
      trace(“cancelHandler: “ + event);
    }
    * function completeHandler(event:Event):void {
      trace(“completeHandler: “ + event);
    }
    * function ioErrorHandler(event:IOErrorEvent):void {
      trace(“ioErrorHandler: “ + event);
    }
    * function openHandler(event:Event):void {
      trace(“openHandler: “ + event);
    }
    * function progressHandler(event:ProgressEvent):void {
      var file:FileReference = FileReference(event.target);
      trace(“progressHandler name=“ + file.name + “ bytesLoaded=“ + event.bytesLoaded + “ bytesTotal=“ + event.bytesTotal);
    }
    * function securityErrorHandler(event:SecurityErrorEvent):void {
      trace(“securityErrorHandler: “ + event);
    }
    * function selectHandler(event:Event):void {
      var file:FileReference = FileReference(event.target);
      trace(“selectHandler: name=“ + file.name + “ URL=“ + downloadURL.url);
    }
  }
}
另请参见
FileReference.download()
FileReference.upload()
progress 事件
事件对象类型: flash.events.ProgressEvent
ProgressEvent.type property = flash.events.ProgressEvent.PROGRESS
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
在文件上载或下载操作期间定期调度。 progress 事件在 Flash Player 将字节传输到服务器时调度,即使传输最终没有成功,也会在传输期间定期调度。 要确定文件传输是否真正成功和完成以及何时真正成功和完成,需要侦听 complete 事件。
在某些情况下,接收不到 progress 事件。 例如,当所传输的文件非常小或者上载或下载速度非常快时,可能就不会调度 progress 事件。
在低于 OS X 10.3 版本的 Macintosh 平台上不能确定文件上载进度。progress 事件在上载操作期间调用,但 progress 事件的 bytesLoaded 属性值为 -1,表示不能确定进度。
定义 progress 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
bytesLoaded 在侦听器处理事件时加载的项数或字节数。
bytesTotal 如果加载进程成功,最终将加载的项目或字节总数。
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 报告进度的网络对象。
示例
下面的示例演示 progress 事件的用法。 要运行此示例,请将 downloadURL.url 属性更改为指向一个实际的域和文件,而不是虚拟的 .com/SomeFile.pdf]http://www.[yourDomain].com/SomeFile.pdf。 您可能还需要编译 SWF 文件,将“本地回放安全性”设置为“只访问网络”,或更新 Flash Player 的安全设置,以允许此文件网络访问。
package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  public class FileReference_event_progress extends Sprite {
    * var downloadURL:URLRequest;
    * var fileName:String = “SomeFile.pdf“;
    * var file:FileReference;
    public function FileReference_event_progress() {
      downloadURL = new URLRequest();
      downloadURL.url = “http://www.[yourDomain].com/SomeFile.pdf“;
      file = new FileReference();
      file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
      file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
      file.addEventListener(Event.COMPLETE, completeHandler);
      file.download(downloadURL, fileName);
    }
    * function progressHandler(event:ProgressEvent):void {
      var file:FileReference = FileReference(event.target);
      trace(“progressHandler: name=“ + file.name + “ bytesLoaded=“ + event.bytesLoaded + “ bytesTotal=“ + event.bytesTotal);
    }
    * function ioErrorHandler(event:IOErrorEvent):void {
      trace(“ioErrorHandler: “ + event);
    }
    * function completeHandler(event:Event):void {
      trace(“completeHandler: “ + event);
    }
  }
}
另请参见
FileReference.complete
flash.events.ProgressEvent
FileReference.download()
FileReference.upload()
securityError 事件
事件对象类型: flash.events.SecurityErrorEvent
SecurityErrorEvent.type property = flash.events.SecurityErrorEvent.SECURITY_ERROR
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
当对 FileReference.upload() 或 FileReference.download() 方法的调用尝试将文件上载到服务器,或是从调用方安全沙箱外部的服务器上下载文件时进行调度。 用于描述发生的特定错误的文本属性的值通常为 “securitySandboxError“。 执行调用的 SWF 可能已经尝试访问其域外部的 SWF 文件,但却无权这样做。 您可以通过使用跨域策略文件来尝试纠正此错误。
SecurityErrorEvent.SECURITY_ERROR 常量定义 securityError 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 报告安全错误的网络对象。
text 要显示为错误消息的文本。
另请参见
FileReference.download()
FileReference.upload()
Flash Player 安全性
select 事件
事件对象类型: flash.events.Event
Event.type property = flash.events.Event.SELECT
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9
当用户从文件浏览对话框选择要上载或下载的文件时调度。 (调用 FileReference.browse()、FileReferenceList.browse() 或 FileReference.download() 方法时将打开此对话框。) 当用户选择文件并确认操作(例如,通过单击“确定”)时,会填充 FileReference 对象的属性。
select 事件的运行方式会稍有不同,具体取决于调用它的方法。 在调用 browse() 后调度 select 事件时,Flash Player 能够读取 FileReference 对象的所有属性,因为用户所选的文件位于本地文件系统上。 在调用 download() 后调度 select 时,Flash Player 只能读取 name 属性,因为在调度 select 时,文件尚未下载到本地文件系统。 如果已下载了文件,则调度 complete 时,Flash Player 将可以读取 FileReference 对象的所有其它属性。
定义 select 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target FileReference 对象,已在其中选定了一个项目。
示例
下面的示例演示 select 事件对象的用法。 要运行此示例,请将 uploadURL.url 属性更改为指向一个实际的域和文件,而不是虚拟的 .com/SomeFile.pdf]http://www.[yourDomain].com/SomeFile.pdf。 您可能还需要编译 SWF 文件,将“本地回放安全性”设置为“只访问网络”,或更新 Flash Player 的安全设置,以允许此文件网络访问。 要想可以从桌面运行这个示例,您的服务器还需要发送 crossdomain.xml 文件。 如果触发了 ioErrorHandler() 函数,可能需要使用一个有效的 URL 来更新提供的 uploadURL,此有效的 URL 被配置成接收上载。
package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  public class FileReference_event_select extends Sprite {
    * var uploadURL:URLRequest;
    * var file:FileReference;
    public function FileReference_event_select() {
      uploadURL = new URLRequest();
      uploadURL.url = “http://www.[yourDomain].com/yourUploadHandlerScript.cfm“;
      file = new FileReference();
      file.addEventListener(Event.SELECT, selectHandler);
      file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
      file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
      file.addEventListener(Event.COMPLETE, completeHandler);
      file.browse();
    }
    * function selectHandler(event:Event):void {
      var file:FileReference = FileReference(event.target);
      trace(“selectHandler: name=“ + file.name + “ URL=“ + uploadURL.url);
      file.upload(uploadURL);
    }
    * function ioErrorHandler(event:IOErrorEvent):void {
      trace(“ioErrorHandler: “ + event);
    }
    * function progressHandler(event:ProgressEvent):void {
      var file:FileReference = FileReference(event.target);
      trace(“progressHandler: name=“ + file.name + “ bytesLoaded=“ + event.bytesLoaded + “ bytesTotal=“ + event.bytesTotal);
    }
    * function completeHandler(event:Event):void {
      trace(“completeHandler: “ + event);
    }
  }
}
uploadCompleteData 事件
事件对象类型: flash.events.DataEvent
DataEvent.type property = flash.events.DataEvent.UPLOAD_COMPLETE_DATA
语言版本 :  ActionScript. 3.0
Player 版本 :  Flash Player 9.0.28.0
成功上载然后从服务器接收数据之后调度。 如果未从服务器返回数据,则不调度此事件。
定义 uploadCompleteData 事件对象的 type 属性值。
此事件具有以下属性:
属性 值
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
data 成功上载文件后从服务器返回的原始数据。
target 成功上载后接收数据的 FileReference 对象。
示例
下例显示在运行时加载的文件的数据格式和状态信息。
注意:若要运行此示例,请更改 uploadURL.url 属性以指向实际的 URL,而不是示例中虚拟的地址。 URL 应指向名为 yourUploadHandlerScript.cfm 的文件,该文件位于指定 URL 的根 Web 目录下。 根据您的配置,您可能还需要编译 SWF 文件,将“本地回放安全性”设置为“只访问网络”,或更新 Flash Player 的安全设置,以允许此文件网络访问。
package {
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.FileFilter;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  public class FileReferenceExample extends Sprite {
    * var uploadURL:URLRequest;
    * var file:FileReference;
    public function FileReferenceExample() {
      uploadURL = new URLRequest();
      uploadURL.url = “http://www.[yourDomain].com/yourUploadHandlerScript.cfm“;
      file = new FileReference();
      configureListeners(file);
      file.browse(getTypes());
    }
    * function configureListeners(dispatcher:IEventDispatcher):void {
      dispatcher.addEventListener(Event.CANCEL, cancelHandler);
      dispatcher.addEventListener(Event.COMPLETE, completeHandler);
      dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
      dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
      dispatcher.addEventListener(Event.OPEN, openHandler);
      dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
      dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
      dispatcher.addEventListener(Event.SELECT, selectHandler);
      dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler);
    }
    * function getTypes():Array {
      var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter());
      return allTypes;
    }
    * function getImageTypeFilter():FileFilter {
      return new FileFilter(“Images (*.jpg, *.jpeg, *.gif, *.png)“, “*.jpg;*.jpeg;*.gif;*.png“);
    }
    * function getTextTypeFilter():FileFilter {
      return new FileFilter(“Text Files (*.txt, *.rtf)“, “*.txt;*.rtf“);
    }
    * function cancelHandler(event:Event):void {
      trace(“cancelHandler: “ + event);
    }
    * function completeHandler(event:Event):void {
      trace(“completeHandler: “ + event);
    }
    * function uploadCompleteDataHandler(event:Event):void {
      trace(“uploadCompleteData: “ + event);
    }
    * function httpStatusHandler(event:HTTPStatusEvent):void {
      trace(“httpStatusHandler: “ + event);
    }
    * function ioErrorHandler(event:IOErrorEvent):void {
      trace(“ioErrorHandler: “ + event);
    }
    * function openHandler(event:Event):void {
      trace(“openHandler: “ + event);
    }
    * function progressHandler(event:ProgressEvent):void {
      var file:FileReference = FileReference(event.target);
      trace(“progressHandler name=“ + file.name + “ bytesLoaded=“ + event.bytesLoaded + “ bytesTotal=“ + event.bytesTotal);
    }
    * function securityErrorHandler(event:SecurityErrorEvent):void {
      trace(“securityErrorHandler: “ + event);
    }
    * function selectHandler(event:Event):void {
      var file:FileReference = FileReference(event.target);
      trace(“selectHandler: name=“ + file.name + “ URL=“ + uploadURL.url);
      file.upload(uploadURL);
    }
  }

了解更多请访问:http://www.ndfweb.cn/news-422.html
  NDF俱乐部
  国际域名注册
  建站咨询
合作伙伴:万网 | 新网 | 新网互联 NDF网站建设淘宝店 | 实用工具 | 外貿網站建設 | 联系我们
鲁公网安备 37110202000336号 鲁ICP备2021027697号-1 Sitemap - RSSRSS订阅