vbftp服务
采用ezftp控件
FTP.RemoteAddress = 地址
FTP.UserName = 用户名
FTP.Password = 密码
FTP.Connect
FTP.LocalFile = 文件本地地址
FTP.RemoteFile = ftp上的地址
On Error Resume Next
FTP.PutFile
If Err <> 0 Then
MsgBox "未能连接到远程服务器,请检测网络", vbExclamation, "注意"
Exit Sub
End If
MsgBox "上传成功", , "成功!"
FTP.Disconnect
⑵ VB编写个程序上传文件到FTP
首先,在VB工具栏中添加部件Microsoft Internet Transfer Control 6.0 ,之后工具箱会多一个Inet的控件。
拖放该控件到窗体上,设置控件中的属性
protocol : 2-icFTP
RemoteHost : 你的FTP服务IP或域名
RemotePort : 你的FTP端口
URL : 你的FTPURL地址
UserName和Password 这两个就不用说了
'窗体中添加一个文本框(text1)和一个按钮(Command1)代码如下:
Private Sub Command1_Click()
Dim isRight As Boolean
Dim filestr As String
filestr = app.path & "\A"
Inet1.Execute "", "PUT " & filestr & " /A"
isRight = Inet1.StillExecuting '获取当前是否仍然在执行命令
Do While isRight
isRight = Inet1.StillExecuting
DoEvents
Loop
filestr = app.path & "\B"
Inet1.Execute "", "PUT " & filestr & " /B"
isRight = Inet1.StillExecuting '获取当前是否仍然在执行命令
Do While isRight
isRight = Inet1.StillExecuting
DoEvents
Loop
filestr = app.path & "\C"
Inet1.Execute "", "PUT " & filestr & " /C"
isRight = Inet1.StillExecuting '获取当前是否仍然在执行命令
Do While isRight
isRight = Inet1.StillExecuting
DoEvents
Loop
filestr = app.path & "\D"
Inet1.Execute "", "PUT " & filestr & " /a/D"
isRight = Inet1.StillExecuting '获取当前是否仍然在执行命令
Do While isRight
isRight = Inet1.StillExecuting
DoEvents
Loop
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
text1.Text = text1.Text + CStr(State)
Select Case State
Case 11
text1.text ="在与主机通信的过程中发生了错误"
Case 12
text1.Text = "上传完成"
End Select
End Sub
⑶ vb中怎么应用ftp
对于FTP,你可以使用Execute方法执腊扰行FTP命令SIZE获得文件大小。然后在StateChanged事件中可以获得返回的文件大小。
Private Sub Command1_Click()
Inet1.Execute "ftp://127.0.0.1", "SIZE 1.gif"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
'State = 12 时,用 GetChunk 方法检索服务器的响应。
Dim vtData As Variant ' Data variable.
Select Case State
'掘岁...没有列举其它情况。
Case icError '11
'出现错误时,返回 ResponseCode 和 ResponseInfo。
vtData = Inet1.ResponseCode & ":" & _
Inet1.ResponseInfo
Case icResponseCompleted ' 12
Dim strData As String
Dim bDone As Boolean: bDone = False
'取得第一个块。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
strData = strData & vtData
'取得下一个块。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
If Len(vtData) = 0 Then
bDone = True
End If
Loop
MsgBox strData
End Select
End Sub
对于HTTP下载,你判局睁可以用GetHeader(Content-length)来获得文件大小。但不是所有HTTP下载时都能获得文件长度,特别是通过代理服务器下载文件时。如:
Private Sub Form_Load()
Inet1.Execute "http://askpro.yeah.net/"
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
If State = icResponseReceived Then
MsgBox "File size is " & Inet1.GetHeader("Content-Length")
End If
End Sub
⑷ 急!用VB代码实现FTP的上传和下载(高分)
要实现在这个代码太多,在这里发有点不太现实,VB 实现 FTP 用 WinSock 控件或API。
做该类程序主要是握手控制,即返回值的处理并做相应传输,另外就是了解每个 FTP 命令的作用,这样做个 FTP 服务端或客户端都不是什么难事。
⑸ VB做ftp上传工具
在VB中实现文件上传
VisualBasic作为一个集应用程序开发、测试、查错功能于一体的集成式开发环境,越来越受到程序员的青睐。笔者在开发某数据库维护系统的过程中,选择了VB5.0作为开发平台,Unix作为服务器端操作系统,Informix作为服务器数据库。
问题的出现
在开发该维护系统的过程中,注意到Informix数据库的字段类型CLOB填入数据时需要函数FILETOCLOB("FILENAME","SERVER"),其中的"FILENAME"需要指出文件路径和文件名称。然而,在维护过程中此文件是在客户端执行的,这样就要求即时将文件传输到服务器端。
解决办法
1.FTP传输工具
我们首先使用FTP传输工具,用VB5.0中SHELL命令调用DOS批处理文件来实现传输的需要。
Shell调用格式:
Shell(pathname[,windowstyle])
例子:Shell("c:\windows\upload.bat")
批处理文件upload.bat的内容:
c:\windows\ftphostname
username
password
sendc:\zrh\upload.txtupload.txt
bye
该命令实现了文件"upload.txt"的传输要求。在使用完毕之后,再调用命令把该文件删除。
例子:Shell("c:\windows\del_up.bat")
批处理文件del_up.bat的内容:
c:\windows\ftphostname
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)
'
'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->
⑹ VB中如何读取ftp服务器上面的text文本文件
使用Inet控件进行FTP操作
Inet1.Protocol = icFTP
Inet1.RemoteHost = p_ServerName ' 服务器IP或者域名
Inet1.RemotePort = CInt(p_ServerPort) 'FTP端口
Inet1.UserName = uName 'FTP帐号
Inet1.Password = uPWS 'FTP密码
Inet1.Execute "", "ls"
ri = Inet1.StillExecuting
Do While ri
ri = Inet1.StillExecuting
DoEvents
Loop
vd = Inet1.GetChunk(1024, icString)
判断服务的FTP是否连接成功
下面下载服务器上的text数据,假设文件名为1.txt
p_pathDir 为当前软件运行目录,后面一个字符自带 \,如e:\1111\
tepFile 临时文件
工作方式是先下载这个文件下为,然后判断本地是否存在,如果存在,则打开文件读取内容,如果不存在,则说明服务器上不存在这个文件,但要注意,如果文件过大的话,可能需要等待的时候比较长。
tepFile = p_pathDir & "1.txt_"
'Inet1.Execute hDir, "get 1.txt " & tepFile
Inet1.Execute "", "GET 1.txt " & tepFile
ri = Inet1.StillExecuting
Do While ri
ri = Inet1.StillExecuting
DoEvents
Loop
If Dir(tepFile) = "" Then
Inet1.Cancel
MsgBox "文件不存在" & InetState, vbOKOnly + vbExclamation, "系统提示"
Else
Inet1.Cancel
'这里已经存在,与本地操作文件一样,请打开获取内容,不再详细写出
'
End If
⑺ VBNET从FTP下载文件,需要先判断文件是否存在吗
需要。
在实际使用FTP文件服务器的过程中,经常需要远程下载解析文件。为提高效率,需要判断文件存在与否,有选择的进行解析。
FTP协议是一个用于在计算机网络上客户端和服务器之间进行文件传输的应用层协议,包括FTP服务器和FTP客户端两个组成部分。FTP能操作任何类型的文件而不需要进一步处理,但有着极高的延时,从开始请求到第一次接收需求数据之间的时间较长,并不时地执行一些冗长的登录进程。
⑻ VB怎么获得FTP服务器的文件以及文件夹列表
public strData as string
'这段可以返回服务器中的第一级目录名,保存在strData中, 如有多个文件夹名每个文件夹名会以空格分开。读取时判段一下。
Inet1.Execute Inet1.URL, "dir """ & dirName & """"
Do
DoEvents
Loop While Inet1.StillExecuting = True
msgbox strData
'这段是进入目录中,要想获得服务器中所有的文件夹名,就可以用递规的办法来获得。
Inet1.Execute Inet1.URL, "cd """ & dirName & """"
Do
DoEvents
Loop While Inet1.StillExecuting = True
Private Sub Inet1_StateChanged(ByVal State As Integer)
Select Case State
Case 1
StatusBar1.Panels.Item(1).Text = "该控件正在查询所指定的主机的 IP 地址"
Case 2
StatusBar1.Panels.Item(1).Text = "该控件已成功地找到所指定的主机的 IP 地址"
Case 3
StatusBar1.Panels.Item(1).Text = "该控件正在与主机连接"
Case 4
StatusBar1.Panels.Item(1).Text = "该控件已与主机连接成功"
Case 5
StatusBar1.Panels.Item(1).Text = "该控件正在向主机发送请求"
Case 6
StatusBar1.Panels.Item(1).Text = "该控件发送请求已成功"
Case 7
StatusBar1.Panels.Item(1).Text = "该控件正在接收主机的响应"
Case 8
StatusBar1.Panels.Item(1).Text = "该控件已成功地接收到主机的响应"
Case 9
StatusBar1.Panels.Item(1).Text = "该控件正在解除与主机的连接"
Case 10
StatusBar1.Panels.Item(1).Text = "该控件已成功地与主机解除了连接"
Case 11
MsgBox "与主机通讯时出现了错误", vbInformation, "个人资料"
Case 12
Dim vtData As Variant
Dim bDone As Boolean
bDone = False
'取得第一个块。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
strData = strData & vtData
'取得下一个块。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
If Len(vtData) = 0 Then
bDone = True
End If
Loop
StatusBar1.Panels.Item(1).Text = "该请求已经完成,并且所有数据均已接收到"
Case Else
StatusBar1.Panels.Item(1).Text = Inet1.ResponseCode & ": " & Inet1.ResponseInfo
End Select
End Sub
⑼ VB FTP服务器 制作
首先,要保证你的机器能上网,而且有不低于ADSL 512Kbps的网络速度。其次,硬件性能要能满足你的需要。最后,需要安装FTP服务器端的软件,这类软件很多,可以使用微软的IIS(Internet Information Server 因特网信息服务系统),也可以使用专业软件。不同的软件提供的功能不同,适应的需求和操作系统也不同。一般来说,系统最低要求如下:
CPU:PⅢ 450MHz以上
内存:256MB SDRAM以上
带宽:ADSL 512Kbps以上
至于操作系统,Windows 98/Me/NT/2000/XP均可,如果对服务器的性能和安全性要求很低,可以采用Windows 98和Windows Me。本文中,如无特殊说明,均以Windows XP专业版为操作系统,其余操作系统下FTP服务器的架设及设置均大同小异。
一、用IIS架设(windows 2000 和windows XP 自带)
如果只是想建个小型的同时在线用户数不超过10个的FTP服务器,且不会同时进行大流量的数据传输,可以用IIS 5.0作为服务器软件来架设(IIS只适用于Windows NT/2000/XP操作系统)。
1.安装
Windows XP默认安装时不安装IIS组件,需要手工添加安装。进入控制面板,找到“添加/删除程序”,打开后选择“添加/删除Windows组件”,在弹出的“Windows组件向导”窗口中,将“Internet信息服务(IIS)”项选中。在该选项前的“√”背景色是灰色的,这是因为Windows XP默认并不安装FTP服务组件。再点击右下角的“详细信息”,在弹出的“Internet信息服务(IIS)”窗口中,找到“文件传输协议(FTP)服务”,选中后确定即可。
安装完后需要重启。Windows NT/2000和Windows XP的安装方法相同。
2.设置
电脑重启后,FTP服务器就开始运行了,但还要进行一些设置。点击“开始→所有程序→管理工具→Internet信息服务”,进入“Internet信息服务”窗口后,找到“默认FTP站点”,右击鼠标,在弹出的右键菜单中选择“属性”。在“属性”中,我们可以设置FTP服务器的名称、IP、端口、访问账户、FTP目录位置、用户进入FTP时接收到的消息等。
1)FTP站点基本信息
进入“FTP站点”选项卡,其中的“描述”选项为该FTP站点的名称,用来称呼你的服务器,可以随意填,比如“我的小站”;“IP地址”为服务器的IP,系统默认为“全部未分配”,一般不须改动,但如果在下拉列表框中有两个或两个以上的IP地址时,最好指定为公网IP;“TCP端口”一般仍设为默认的21端口;“连接”选项用来设置允许同时连接服务器的用户最大连接数;“连接超时”用来设置一个等待时间,如果连接到服务器的用户在线的时间超过等待时间而没有任何操作,服务器就会自动断开与该用户的连接。
2)设置账户及其权限
很多FTP站点都要求用户输入用户名和密码才能登录,这个用户名和密码就叫账户。不同用户可使用相同的账户访问站点,同一个站点可设置多个账户,每个账户可拥有不同的权限,如有的可以上传和下载,而有的则只允许下载。
3)安全设定
进入“安全账户”选项卡,有“允许匿名连接”和“仅允许匿名连接”两项,默认为“允许匿名连接”,此时FTP服务器提供匿名登录。“仅允许匿名连接”是用来防止用户使用有管理权限的账户进行访问,选中后,即使是Administrator(管理员)账号也不能登录,FTP只能通过服务器进行“本地访问”来管理。至于“FTP站点操作员”选项,是用来添加或删除本FTP服务器具有一定权限的账户。IIS与其他专业的FTP服务器软件不同,它基于Windows用户账号进行账户管理,本身并不能随意设定FTP服务器允许访问的账户,要添加或删除允许访问的账户,必须先在操作系统自带的“管理工具”中的“计算机管理”中去设置Windows用户账号,然后再通过“安全账户”选项卡中的“FTP站点操作员”选项添加或删除。但对于Windows 2000和Windows XP专业版,系统并不提供“FTP站点操作员”账户添加与删除功能,只提供Administrator一个管理账号。