⑴ vb如何上傳文件到指定ftp
最簡單的方法是用ftp批處理,代碼如下
open app.path & "\ftpcmd.ftp" for output as #1 '創建一個ftp命令文件
print #1, "open " & "IP" '打開ftp伺服器
print #1, "user " & "用戶名"
print #1, "pass " & "密碼"
print #1, "lcd " & "本地文件路徑" '指定本地文件所在目錄
print #1, "put " & "文件名"
close #1 'frp命令文件寫完了
shell "ftp -n -s:" & app.path & "\ftpcmd.ftp" '調用系統ftp,並執行上面寫的ftpcmd.ftp
⑵ vb ftp上傳
Dim uploadedfile As String
(或使用控制項Text 名字:uploadedfile)
Inet1.Execute "ftp://192.168.1.17", "PUT " & filestr & " " & uploadedfile
⑶ VB 如何獲取FTP上的文件
要用到inet控制項。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
關於inet控制項的祥細用法可以看msdn中的幫助。
⑷ 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編程
建議樓主用winsock連接FTP伺服器,發送FTP命令來實現交互,另外說明下,目錄的獲取與文件的傳輸是另開埠進行的,以下是命令表
ftp協議命令字(轉)
命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
標准 FTP 信息如下:
響應代碼 解釋說明
110 新文件指示器上的重啟標記
120 伺服器准備就緒的時間(分鍾數)
125 打開數據連接,開始傳輸
150 打開連接
200 成功
202 命令沒有執行
211 系統狀態回復
212 目錄狀態回復
213 文件狀態回復
214 幫助信息回復
215 系統類型回復
220 服務就緒
221 退出網路
225 打開數據連接
226 結束數據連接
227 進入被動模式(IP 地址、ID 埠)
230 登錄網際網路
250 文件行為完成
257 路徑名建立
331 要求密碼
332 要求帳號
350 文件行為暫停
421 服務關閉
425 無法打開數據連接
426 結束連接
450 文件不可用
451 遇到本地錯誤
452 磁碟空間不足
500 無效命令
501 錯誤參數
502 命令沒有執行
503 錯誤指令序列
504 無效命令參數
530 未登錄網路
532 存儲文件需要帳號
550 文件不可用
551 不知道的頁類型
552 超過存儲分配
553 文件名不允許
⑺ VB 上傳文件到Ftp
傳送文件,用 Inet 控制項
Components -> Microsoft Internet Transfer Control 6.0
Private Sub FTPTxtFile()
Dim TRANSFER_STRING As String, PutString As String
Dim lSizeOfFile As Integer
Dim sLocalDir As String
Dim ftp As String
'
sLocalDir = GetSetting(gsTitle, "Settings", "LocalDir", "c:\")
If Right$(sLocalDir, 1) <> "\" Then sLocalDir = sLocalDir & "\"
'Set up FTP Connection
Inet1.URL = "ftp://" & sEdiAddr
Inet1.UserName = sEdiUser
Inet1.Password = sEdiPass
ftp = sEdiPath & sFTPFilename
Call check_EDI_execute
Inet1.Execute , "dir *.txt"
Call check_EDI_execute
'Transfer file
TRANSFER_STRING = "PUT " & sTxtFile & " " & ftp
'Inet1.Execute , TRANSFER_STRING
'Call check_EDI_execute
Inet1.Execute , "CLOSE"
Call check_EDI_execute
End Sub
Private Sub check_EDI_execute()
On Error GoTo FTPError1
While Inet1.StillExecuting
DoEvents
Wend
Exit Sub
FTPError1:
MsgBox "FTP Error. Error - " & Str(Err) & ", " & Error, vbExclamation, gsTitle
End Sub
⑻ vb中ftp操作的代碼
這個嗎
⑼ VB 上傳ftp
Private Sub Command1_Click()
Inet1.URL = "ftp://210.83.61.42/"
Inet1.Password = "111"
Inet1.UserName = "111"
Inet1.OpenURL
Inet1.Execute , "put d:\a.txt /d:/ftp/wwwroot/a.txt" 'put方法,d:\a.txt是本地路徑
Inet1.Execute , "QUIT"
End Sub
⑽ VB中FtpPutFile的用法
Inet1.Protocol = icFTP
Inet1.RemoteHost = "10.10.10.10" '伺服器地址
Inet1.RemotePort = 21 'FTP埠
Inet1.UserName = "abc" '用戶名
Inet1.Password = "123456" '密碼
Inet1.Execute "", "PUT C:1.txt"
ri = Inet1.StillExecuting
Do While ri
ri = Inet1.StillExecuting
DoEvents
Loop