在VB中实现文件上传
Visual Basic作为集应用程序开发、测试和错误检查功能于一体的集成开发环境,越来越受到程序员的青睐。在开发数据库维护系统的过程中,作者选择了VB5.0作为开发平台,Unix作为服务器端操作系统,Informix作为服务器数据库。
问题的出现
在开发维护系统的过程中,注意到Informix数据库的字段类型CLOB在填写数据时需要函数FILETOCLOB(“文件名”,“服务器”),而“文件名”需要注明文件路径和文件名。但是在维护过程中,这个文件是在客户端执行的,所以需要立即将文件传输到服务器端。
解决方案
1FTP传输工具
首先我们使用FTP传输工具,利用VB5.0中的SHELL命令调用DOS批处理文件实现传输。
Shell调用格式:
shell (pathname [,windowstyle])
示例:Shell(" C:\ Windows \ upload.bat ")
批处理文件upload . bat的内容:
C: FTP主机名
用户名
密码
send C:\ zrh \ upload.txt upload . txt
bye
该命令实现了文件" upload . txt "的传输要求。使用后,调用命令删除文件。
示例:shell(" C:\ windows \ del_up.bat ")
批处理文件del _ up . bat的内容:
C:\ windows \ FTP name
username
password
dele upload.txt
bye
这样,文件" upload . txt "就被删除了。
然而,另一个问题出现了。因为Shell函数的运行机制是和其他程序同步的,也就是说,在调用Shell函数的子程序还没有执行之前,Shell函数后面的语句就已经执行了。在批量添加数据的过程中,会出现某条记录的文件还没有送达,下一条I insert语句(I nsert)已经被调用。这样,ODBC调用就会出错。
2。INET control
Internet传输控制提供了Internet上最常用的两种协议:HTTP和FTP。使用HTTP协议连接WWW服务器下载文件;使用FTP协议登录FTP服务器。一般的FTP命令,比如CD和GET,都可以通过Execute方法实现。
下面是设置INET控件属性的示例。
inet1。URL = FTP://用户名:password @ hostname/document
inet 1。Protocol=2-icFTP
inet1。remote host = hostname
inet 1 . remote port = 21
inet 1 . username = username
inet 1 . password = password
执行文件传输:
inet 1 . execute " FTP://username:password @ hostname ";,_
"上传" &local_filename & "上传1。TXT " "/br/]right 1 = inet 1。still executing
Do While right 1
1 = inet 1 . still executing
Do events
loop
因此,文件被上载。
* sINET控件的优点
INET控件与Shell()函数的区别在于,inet控件调用语句
right 1 = inet 1 . still executing
do while right 1
right 1 = inet 1 . still executing[/br
0条评论