Flex FTP文件上传

本文介绍FlexFTP文件上传的工作原理及实现步骤,包括文件选择、socket连接与验证、数据发送等核心过程,并提供了具体的Flex代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Flex FTP文件上传原理就是利用Flex Socket组件与FTP服务器进行网络通讯并根据FTP协议进行指令发生、接收,数据的传输和接收。本文指的是Flex web应用的FTP文件上传,具体实现有下述3个工作:

    1)上传文件选择、加载,可以使用FlexFileRefrence组件;

    2socket创建、连接、ftp用户登录信息的验证;

    3)文件数据发送;

       先假设要上传的文件名称为:demo.doc, 该上传的文件内容为fileData,下述为FTP文件上传的核心类。

 

package fileupload

{

    import flash.events.Event;

    import flash.events.IEventDispatcher;

    import flash.events.IOErrorEvent;

    import flash.events.ProgressEvent;

    import flash.events.SecurityErrorEvent;

    import flash.net.FileReference;

    import flash.net.Socket;

    import flash.utils.ByteArray;

    import flash.utils.clearInterval;

    import flash.utils.setInterval;

 

    public class FtpFileUpDownload

    {

       private var ftpSocket:Socket;

       private var ftpResponce:String;

       private var dataSocket:Socket;

       private var dataResponse:String;

       private var clientIP:String;

       private var clientPort:uint;

       private var canceled:Boolean = false;

       private var dispatcher:IEventDispatcher;

       private var fileName:String;

       private var fileData:ByteArray;

       private var _isAnonymous:Boolean = false;

       private var _userName:String;

       private var _serverIP:String;

       private var _userPwd:String;

       private var _userDir:String;

       private var _serverPort:uint = 21;

       private var intervalID:int;

       //

       public function FtpFileUpDownload(dispatcher:IEventDispatcher)

       {

           this.dispatcher = dispatcher;

       }

 

       /**

        * isAnonymous, FTP 是否允许 匿名访问,默认为false

        */

       public function get isAnonymous():Boolean{

           return _isAnonymous;

       }

       public function set isAnonymous(value:Boolean):void{

           _isAnonymous = value;

       }

      

       public function get userName():String{

           return _userName;

       }

       public function set userName(value:String):void{

           _userName = value;

       }

      

       public function get serverIP():String{

           return _serverIP;

       }

       public function set serverIP(value:String):void{

           _serverIP = value;

       }

      

       public function get userPwd():String{

           return _userPwd;

       }

       public function set userPwd(value:String):void{

           _userPwd = value;

       }

      

       /**

        * userDir, FTP 用户上传目录

        */

       public function get userDir():String{

           return _userDir;

       }

       public function set userDir(value:String):void{

           _userDir = value;

       }

      

       public function get serverPort():uint{

           return _serverPort;

       }

       public function set serverPort(value:uint):void{

           _serverPort = value;

       }

      

       /**

        * upload file, data is null is not allowed.

        */

       public function upload(data:ByteArray, fileName:String):void{

           this.fileName = fileName;

           this.fileData = data;

           if(data==null){

              dispatcher.dispatchEvent(new FileUpDownloadEvent(FileUpDownloadEvent.ERROR,"Data is null is not allowed!"));

              return;

           }

           if(!check()) return;

           connect();

       }

      

       private function check():Boolean{

           var blnResult:Boolean = true;

           if(!isAnonymous){

              if(StringUtil.isEmpty(userName) || StringUtil.isEmpty(userPwd)){//

                  dispatcher.dispatchEvent(new FileUpDownloadEvent(FileUpDownloadEvent.ERROR,

                     "请输入用户名和口令!"));

                  blnResult = false;

              }

           }

           if(StringUtil.isEmpty(serverIP)){

              dispatcher.dispatchEvent(new FileUpDownloadEvent(FileUpDownloadEvent.ERROR,

                  "请输入FTP服务器IP地址!"));

              blnResult = false;

           }

           return blnResult;

       }

      

       private function connect():void{

           ftpSocket = new Socket(serverIP, serverPort);

           ftpSocket.addEventListener(ProgressEvent.SOCKET_DATA, ftpSocketDataHandle);      ftpSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,ftpSocketSecurityErrorHandle);

    ftpSocket.addEventListener(IOErrorEvent.IO_ERROR,ftpIOErrorHandle);

       }

      

       private function ftpIOErrorHandle(evt:IOErrorEvent):void {

           dispatcher.dispatchEvent(new FileUpDownloadEvent(FileUpDownloadEvent.ERROR,evt.text));

       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值