在VB中实现文件上传

2016-02-19 21:10 121 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐在VB中实现文件上传,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

VisualBasic作为一个集应用程序开发、测试、查错功能于一体的集成式开发环境,越来越受到程序员的青睐。笔者在开发某数据库维护系统的过程中,选择了VB5.0作为开发平台,Unix作为服务器端操作系统,Informix作为服务器数据库。
  问题的出现
  在开发该维护系统的过程中,注意到Informix数据库的字段类型CLOB填入数据时需要函数FILETOCLOB("FILENAME","SERVER"),其中的"FILENAME"需要指出文件路径和文件名称。然而,在维护过程中此文件是在客户端执行的,这样就要求即时将文件传输到服务器端。
  解决办法
  1.FTP传输工具
  我们首先使用FTP传输工具,用VB5.0中SHELL命令调用DOS批处理文件来实现传输的需要。
  Shell调用格式:
  Shell(pathname[,windowstyle])
  例子:Shell("c:windowsupload.bat")
  批处理文件upload.bat的内容:
  c:windowsftphostname
  username
  password
  sendc:zrhupload.txtupload.txt
  bye
  该命令实现了文件"upload.txt"的传输要求。在使用完毕之后,再调用命令把该文件删除。
  例子:Shell("c:windowsdel_up.bat")
  批处理文件del_up.bat的内容:
  c:windowsftphostname
  username
  password
  deleupload.txt
  bye
  这样,文件"upload.txt"被删除。
  但是,另一个问题出现了。由于Shell函数的运行机制是与其它程序同步执行,也就是说,当调用Shell函数的子程序还没有执行完毕之前,Shell函数后面的语句已经执行。在大批量添加数据的过程中,就会出现某个记录的文件还没有传到,而下一个插入语句(Insert)已经开始调用。这样,ODBC调用就会出现错误。
  2.INET控件
  InternetTransfer控件提供了Internet上最常使用的两种协议:HTTP和FTP。使用HTTP协议可以连接到WWW服务器上来下载文件;使用FTP协议则可以登录到FTP服务器。一般的FTP命令,例如CD、GET都可以通过Execute方法实现。
  下面是一个设置INET控件属性的例子。
  inet1.URL=ftp://username:password@hostname/document
  inet1.Protocol=2-icFTP
  inet1.RemoteHost=hostname
  inet1.RemotePort=21
  inet1.Username=username
  inet1.Password=password
  执行文件传输:
  Inet1.Execute"ftp://username:password@hostname",_
  "PUT"&local_filename&"UPLOAD1.TXT"
  right1=Inet1.StillExecuting
  DoWhileright1
   right1=Inet1.StillExecuting
   DoEvents
  Loop
  这样便实现了文件的上载。
  *SINET控件的优点
  INET控件与Shell()函数的不同之处在于INET控件通过调用语句
  right1=Inet1.StillExecuting
  DoWhileright1
   right1=Inet1.StillExecuting
   DoEvents
  Loop来控制语句执行的顺序。在文件传输工作未完成之前,程序不会执行其它语句,自然也就不会出现调用Shell函数所出现的问题。变量right1用来测试inet1的执行状态,如果进程中仍在进行文件传输的工作,则调用过程DoEvents给系统空闲时间来做文件传输工作,这样便成功地执行了文件上载的功能。该文件使用完毕之后将被删除。
  Inet1.Execute"ftp://informix:informix@rd",_
  "DELETEUPLOAD1.TXT"
  right1=Inet1.StillExecuting
  DoWhileright1
  right1=Inet1.StillExecuting
  DoEvents
  Loop
  将上载的文件删除是为了避免占用服务器端磁盘空间。
  *S利用StateChanged事件提示信息
  服务器在执行inet1.execute的同时也激活了Inet1_StateChanged事件,进程可以根据捕获到的状态进行动作。
  object_StateChanged(ByValStateAsInteger)
  State:整数类型Integer
  下面是状态的说明。
  常数值   描述icNone
  0   未报告状态icHostResolvingHost
  1   控件正在寻找指定主机的IP地址icHostResolved
  2   控件已成功找到指定主机的IP地址icConnecting
  3   控件正在与指定主机进行连接icConnected
  4   控件已成功与指定主机连接icRequesting
  5   控件正在向主机发出请求icRequestSent
  6   控件已成功向主机发出请求icReceivingResponse
  7   控件正在从主机接收反馈信息icResponseReceived
  8   控件已成功从主机接受反馈信息icDisconnecting
  9   控件正在与主机断开icDisconnected
  10   控件已与主机断开icError
  11   在与主机通信的过程中发生了错误icResponseCompleted
  12   请求结束且数据已经接收到
  下面是一个例子。
  PrivateSubInet1_StateChanged(ByValStateAsInteger)
  'RetrieveserverresponseusingtheGetChunk
  'methodwhenState=12.Thisexampleassumesthe
  'dataistext.
  SelectCaseState
  '...Othercasesnotshown.
  CaseicResponseReceived'12
  DimvtDataAsVariant'Datavariable.
  DimstrDataAsString:strData=""
  DimbDoneAsBoolean:bDone=False
  'Getfirstchunk.
  vtData=Inet1.GetChunk(1024,icString)
  DoWhileNotbDone
  strData=Data&vtData
  'Getnextchunk.
  vtData=Inet1.GetChunk(1024,icString)
  IfLen(vtData)=0Then
   bDone=True
  EndIf
  Loop
  txtData.Text=strData
  EndSelect
  EndSub->

来源:http://www.tulaoshi.com/n/20160219/1625437.html

延伸阅读
标签: Web开发
在WebDev站点上经常看到的一个问题是关于文件上传的。在这篇文章里我将解释如何用PHP实现文件 上传。 设计上传表格 我们主要的目标是完成文件从本地计算机上传到服务器上去。为了做到这一点,我们需要做一个表 格,允许用户选择一个文件并可以提交它。下面是一个例子: HTML HEAD TITLE文件上传表格/TITLE /HEAD BODY TABLE FORM E...
标签: Java JAVA基础
JavaBean是一种基于Java的软件组件。JSP对于在Web 应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。 文件的上传功能在基于B/S的开发模式中非常普遍。同其他开发工具相比较,JSP对文件的上传支持并不是...
在利用VB开发MIS系统的过程中,经常需要制作动态统计报表。本文就如何实现动态数据源下的分组交叉统计报表进行阐述,并结合实例给出编程指导。 在VB6.0的数据环境设计器中,我们可以利用“添加命令”一项来连接报表所需的数据源,同时利用“添加命令”属性中的分组与合计功能设计分组交叉统计报表的数据源,至此我们可以设计简单的数据存在...
在VB编程中,应用程序窗体的出现和关闭一般都是静态的,不过,我们利用下面的一个API函数AnimateWindow就可以轻松实现窗体的动态效果。 API函数AnimateWindow的声明如下: Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal d...
标签: 办公软件
我们经常用Word建立各种各样的文档,日子久了,看到文档标题就想不起文档的内容了(如图1),为了寻找某篇文章,你是不是需要一个个打开文件并深感烦恼?其实大可不必如此,我们可以利用Word的预览功能了解文件的内容。 运行Word,单击“打开”按钮,在弹出的打开对话框中选择Word文件所在的文件夹,并选中某个文件,单击第一行工具栏的“视...

经验教程

661

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部