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一個管理賬號。