thanks

解决方案 »

  1.   

    http协议不提供上传。
    如果一定要按http方式上传,就要配合ASP程序。inet下载二进制文件可以直接用 inet.Open
      

  2.   

    INET 控件   Internet Transfer控件提供了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   Do While right1     right1 = Inet1.StillExecuting     DoEvents   Loop   这样便实现了文件的上载。   *SINET 控件的优点   INET控件与Shell()函数的不同之处在于INET控件通过调用语句   right1 = Inet1.StillExecuting   Do While right1     right1 = Inet1.StillExecuting     DoEvents   Loop来控制语句执行的顺序。在文件传输工作未完成之前,程序 不会执行其它语句,自然也就不会出现调用Shell 函数所出现的问题 。变量right1用来测试inet1 的执行状态,如果进程中仍在进行文件 传输的工作,则调用过程DoEvents给系统空闲时间来做文件传输工作, 这样便成功地执行了文件上载的功能。该文件使用完毕之后将被删除 。   Inet1.Execute "ftp://informix:informix@rd", _   "DELETE UPLOAD1.TXT"   right1 = Inet1.StillExecuting   Do While right1   right1 = Inet1.StillExecuting   DoEvents   Loop   将上载的文件删除是为了避免占用服务器端磁盘空间。   *S利用StateChanged事件提示信息   服务器在执行inet1.execute 的同时也激活了Inet1_StateChang ed事件,进程可以根据捕获到的状态进行动作。   object_StateChanged(ByVal State As Integer)   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     在与主机通信的过程中发生了错误icResponseComp leted   12     请求结束且数据已经接收到   下面是一个例子。   Private Sub Inet1_StateChanged(ByVal State As Integer)   ’ Retrieve server response using the GetChunk   ’ method when State = 12. This example assumes the   ’ data is text.   Select Case State   ’ ... Other cases not shown.   Case icResponseReceived ’ 12   Dim vtData As Variant ’ Data variable.   Dim strData As String: strData = ""   Dim bDone As Boolean: bDone = False   ’ Get first chunk.   vtData = Inet1.GetChunk(1024, icString)   Do While Not bDone   strData = Data & vtData   ’ Get next chunk.   vtData = Inet1.GetChunk(1024, icString)   If Len(vtData) = 0 Then     bDone = True   End If   Loop   txtData.Text = strData   End Select   End Sub