使用Flex实现FTP文件上传功能

来源:互联网 发布:临床试验数据库 编辑:程序博客网 时间:2024/05/21 10:12

最近需要使用Flex实现Ftp文件上传功能,Google到chuangxin兄弟的blog正好有相应的文章及代码,甚喜,忙收藏并拜读之。

搞明白原理后,实测时却发现几个问题:
1、发送FTP命令时无响应。可以正常连接服务器,但发送登录用户名后便失去响应,一直到连接超时。
解决方法:这问题解决时间最长,Google了一下午才找到解决方法。发送FTP命令时,结束符号应该是/r/n,而不是之前的/r。
2、上传文件尾部数据丢失,文件上传不全。13.5k的测试文件只能上传12k,文件尾部数据丢失。本问题有规律可循,结合代码排查起来比较容易。
解决方法:修改sendData函数内条件判断语句,到达文件尾部时先写数据再退出,而不是直接退出。

3、文件名为中文,则上传后文件名变乱码。

解决方法:发送FTP命令时使用UTF-8编码。

 

为了看着方便,后面直接贴出修改后的代码。以下内容转自chuangxin的blog,文章地址http://blog.csdn.net/chuangxin/archive/2010/10/10/5931986.aspx.代码部分有略微修正。

 

 


 

 

       Flex FTP文件上传原理就是利用Flex Socket组件与FTP服务器进行网络通讯并根据FTP协议进行指令发生、接收,数据的传输和接收。本文指的是Flex web应用的FTP文件上传,具体实现有下述3个工作:
    1)上传文件选择、加载,可以使用Flex的FileRefrence组件;
    2)socket创建、连接、ftp用户登录信息的验证;
    3)文件数据发送;
       先假设要上传的文件名称为:demo.doc, 该上传的文件内容为fileData,下述为FTP文件上传的核心类。

 

 

 

FTP文件上传事件代码:

 

 

则Application中要进行FTP文件上传,可简单codeing为(假设FTPFileUpDownload实例为ftpFile):
ftpFile.upload(fileData, “demo.doc”)
当然为了侦听ftp上传是否出错、完成,需要侦听FileUpDownloadEvent的Error和Complete事件。

原创粉丝点击