Flex FTP文件上传

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));

}

private function ftpSocketSecurityErrorHandle(evt:SecurityErrorEvent):void {

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值