FTP協議采用一系列簡單的協議來完成文件傳輸的各種任務,在發送命令的時候,總是在命令的最后加上一個回車換行符,在VB中可以用“vbcrlf”來實現,vc中以“/r/n”表示。以下的命令是從Postel和Reynolds所著的RFC 929修改而來,如果讀者想查看詳細內容,可以參見英文版RFC 929。注意以下出現地標志符CRLF表示的是回車符號,即相當於VC中的“/r/n”。
1. ABOT(Abort,中止)命令
說明:告訴服務器中止上一次FTP服務命令及所有相關的數據傳輸。
用法:ABOR﹝CRLF﹞
參數:無。
例子:
SendData "ABOR" + “/r/n”
注釋:中止命命令可以請求“特殊操作”以強行引起服務器的重視(詳情請參看RFC959)。如果上一次命令已經完成(包括數據傳輸),就不會導致任何操作。服務器不會關閉控制連接,但必須關閉數據連接。
服務器在接收到此命令時可能處於兩種狀態下:(1)FTP服務命令已經完成,(2)FTP服務命令尚在處理中。
在第一種狀態下,服務器關閉數據連接(如果它是打開的)並響應以226應答,表示已成功執行了中止命令。
在第二種狀態下,服務器中止正處理中的FTP服務並關閉數據連接,返回426應答,表示該服務請求被異常終止。然后服務器發送226應答,表示成功執行了中止命令。
l 225 數據連接打開,沒有正在進行的傳輸
l 226 關閉數據連接,請求的文件操作成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 226 連接關閉,傳輸終止。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
2. ACCT(Account,帳號)命令
說明:指定用戶的帳號信息。這條命令只能在發送PASS命令並接收到332代碼之后發送。
用法:ACCT<Account><CRLF>
參數:Account是用戶的帳號,訪問某些服務時可能另外需要它。
例子:
SendData "ACCTN322s" + “/r/n
注釋:當登錄需要帳號信息時,一條成功的PASS命令的響應是應答代碼332。反之,如果登錄不需要帳號信息,成功的PASS命令的應答是230;如果在對話中后來發出的命令需要帳號信息,服務器會返回332或532應答,這分別取決於它是保存(在接收ACCT命令期間)還是丟棄此命令。
返回值(粗體表示成功):
l 202 命令還沒有被實現,在此站點上是多余的。
l 230 用戶已登錄,請繼續。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 503 命令的順序不對。
l 530 無法登錄。
3. ALLO(Allocate,分配)命令
說明:發送文件前在服務器上分配X個字節
用法:ALLO<NumberBytes[<MaxSize>]<CRLF>
參數:NumberBytes是一個整數,代表為該文件保留的內存字節數(使用邏輯字節大小計算)。MaxSize是在使用記錄或頁數據結構時可選的最大記錄或頁大小。
例子:
SendData "ALLO 3000 128" + “/r/n
注釋:一些要保留足夠內存以容納將要傳輸的新文件的服務,會請求這條命令。對於用記錄或頁結構發送的文件來說,最大記錄或頁大小(以邏輯字節計)也可能是必需的;它以這條命令的第二個參數字段中的十進制整數表示。這第二個參數是可選的,但在出現時應該與第一個參數三個ASCII字符<SP>P<SP>分隔開。這條命令后跟一條STORe或APPEnd命令。那些不要求事先聲明最大文件大小的服務器應該把ALLO命令視為NOOP(不操作),而那些只關心最大記錄或頁大小的服務器應該受第一個參數的值,然后忽略它。
返回值(粗體表示成功):
l 200 命令成功。
l 202 命令還沒有被實現,在此站點上是多余的。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將被關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤
l 501 參數或變元中有語法錯誤
l 504 命令中還沒有實現該參數
l 530 無法登錄。
4. APPE(Append with create,附加和創建)命令
說明:讓服務器准備接收一個文件並指示它把這些數據附加到指定的文件名,如果指定的文件尚未存在,就創建它。
用法:APPE<FileName><CRLE>
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "APPE" & szFileName + “/r/n
返回值如下(粗體表示成功)。
l 110 重新啟動標記應答。
在此情況下,文本是精確的,而且不會留給特殊的實現處理;它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態沒問題,准備打開數據進行連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作沒問題,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉;傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 451 請求的操作被中止,處理中發生本地錯誤。
l 452 請求的操作無法執行,系統的存儲空間不足。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 532 文件的存儲需要帳號。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
l 551 請求的操作被中止,未知的頁類型。
l 552 請求的文件操作被中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l 553 請求的操作無法執行,不允許的文件名。
5. CDUP(Change to Parent Directory,變為父目錄)命令
說明:把當前目錄改為遠程文件系統的根目錄,無需改變登錄、帳號信息或傳輸參數。
用法:CDUP<CRLF>
參數:無。
例子:
SendData "CDUP" + “/r/n
注釋:CDUP目錄可改為父目錄。MS-DOS中的等效命令是cd/。創建這條命令是為了適應FTP的不同操作系統。
返回值如下(粗體表示成功):
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
6. CWD(Change Working Directory,改變工作目錄)命令
說明:把當前目錄改為遠程文件系統的指定路徑,而無需改變登錄、帳號信息或傳輸參數。
用法:CWD<Path><CRLF>
參數:Path是遠程系統上的一個工作目錄。
例子:
SendData "CWD/pub/cgvb/uploads" + “/r/n
返回值如下(粗體表示成功):
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
7. DELE(Delete,刪除)命令
說明:刪除服務器站點上在路徑名中指定的文件。
用法DELE<FileName><CRLF>
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "DELE temp.fil" + “/r/n
注釋:如果期望有額外的保護級別(例如選項"確實要刪除此文件嗎?"),這應該由客戶軟件提供。
返回值如下(粗體表示成功):
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
8. HELP(Help,幫助)命令
說明:讓服務器通過到客戶的控制連接發送有關其實現狀態的幫助信息。
用法:HELP[<Topic>]<CRLF>
參數:Topic是一個可選的命令,或是請求哪條命令有關文本的其他參數。
例子:
SendData "HELP" + “/r/n
注釋:HELP可以帶一個參數(例如任何命令的名稱),以在響應中返回更具體的信息。應答為類型211或214。建議在輸入USER命令前允許使用HELP命令。服務器可以使用這個應答來指定站點相關的參數,例如在對HELP SITE的響應中。
返回值如下(粗體表示成功):
l 211 系統狀態,或系統的幫助應答。
l 214 幫助消息。
描述如何使用服務器或某條不常用的具體命令的方法。這個應答只對用戶有用,因為幫助消息沒有標准的格式。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
9. LIST(List,列表)命令
說明:讓服務器給客戶發送一份列表。
用法:LIST[<PathName>]<CRLF>
參數:PathName是服務器系統上的一個有效路徑和文件規范。
例子:
SendData "LIST pub/*.*" + “/r/n
注釋:如果路徑名指定的是一個目錄或其他文件組,服務器傳送一份位於指定目錄中的文件的列表。如果路徑名指定的是一個文件,那么服務應該發送此文件的當前信息。空變元則暗指用戶的當前工作目錄或默認目標。數據將在類型ASCII或類型EBCDIC中通過數據連接傳送(用戶必須確保ASII或EBCDIC的類型適當)。
因為系統與系統之間的文件信息可能有很大差別,所以這項信息要在程序中自動使用可能很困難,但對用戶來說會很有用。
返回值如下(粗體表示成功):
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態沒問題,准備打開數據連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉,傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 451 請求的操作被中止,處理中發生本地錯誤。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
10. MKD(Make Directory ,創建目錄)命令
說明:創建一個在路徑名中指定的目錄(如果是絕對路徑名)或當前工作目錄的子目錄(如果是相對路徑名)。
用法:MKD<Path><CRLF>
參數:Path是服務器端上的一個有效路徑。
例子:
SendData "MKD /users/johnsmith" + “/r/n
返回值如下(粗體表示成功):
l 257 “PATHNAME”已創建。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
11. MODE(Transfer Mode,傳輸模式)命令
說明:指定傳輸模式。
用法:STRU<Mode><CRLF>
參數:Mode是如下ASCII值的其中之一:
S——Stream(流,默認值)
B——Block(塊)
C——Compressed(經過壓縮)
例子:
SendData "STRU B" + “/r/n
返回值如下(粗體表示成功):
l 200 命令成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
12. NLST(Name List,名稱列表)命令
說明:讓服務器給客戶發送一份目錄列表。
用法:NLST[<PathName>]<CRLF>
參數:PathName是服務器系統上的一個有效路徑和文件規范。
例子:
SendData "NLST /pub/cgvB" + “/r/n
注釋:路徑名應該指定一個目錄或其他由系統指定的文件組描述符,空變元則暗指當前目錄。服務器將返回一個文件名稱的流,除此之外沒有其他信息。數據將以ASCII或EBCDIC類型通過數據連接傳送,其中的有效路徑名字符串由<CRLF>或<NL>分隔(用戶必須確保類型正確)。
NLST希望返回的信息可被程序用來進一步地自動處理這些文件。例如,在一個“斷點續傳”功能的實現中。
返回值如下(粗體表示成功):
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態正常,准備打開數據連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉,傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 451 請求的操作被中止,處理中發生本地錯誤。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
13. NOOP(NOOP,無操作)命令
說明:這是一條不進行操作的命令,即它什么都不做。
用法:NOOP<CRLF>
參數:無。
例子:
SendData "NOOP" + “/r/n
注釋:NOOP不會影響任何參數或以前輸入的命令。除了讓服務器發送一條OK應答外,它不指定任何操作。
返回值如下(粗體表示成功):
l 200 命令成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。
14. PASS(Password,密碼)命令
說明:向遠程系統發送用戶的密碼,該命令在USER命令后使用。
用法:PASS<Password><CRLF>
參數:Password是由USER命令指定的已注冊用戶密碼。
例子:
SendData "PASS mypassworD" + “/r/n
注釋:在連接到一台FTP服務器的端口21並接收到一個由代碼220打頭的行,表示服務器已准備好你向它發USER和PASS命令,以登錄進此FTP服務器之后,緊跟着發送USER命令。
PASS命令應該緊跟着USER命令。
如果你在此FTP服務器上有帳號,就可以指定自己的用戶名和密碼。如果想匿名登錄,可以指定用戶名為“Anonymous”,而用自己的電子郵件地址當密碼。
返回值如下(粗體表示成功):
l 202 命令還沒有被實現,在此站點上是多余的。
l 230 用戶已登錄,請繼續。
l 332 登錄需要帳號(請參看ACCT命令)。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 530 無法登錄。
15. PASV(Passive,被動的)命令
說明:告訴服務器在一個非標准端口上收聽數據連接。
用法:PASV<CRLF>
參數:這條命令請求server-DTP(服務器數據傳送規約)“收聽”某個數據端口(該端口不是它的默認數據端口),並等待一個連接而不是在收到傳輸命令時初始化一個連接。對這條命令的響應包括主機地址和此服務器正在收聽的端口地址。
例子:
SendData "PASV" + “/r/n
返回值如下(粗體表示成功):
l 227 輸入被動模式(h1,h2,h3,h4,p1,p2)。
返回值包括一個在數據連接中使用的數據端口的HOST-PORT規約。此參數是一個32位Internet主機地地址和一個16位TCP端口地的拼接。這個地址信息被拆分為8位的字段,並且每個字段的值是作為一個十進制數傳輸的(在字符串意義上)。H1是Internet主機地址的高位字節,p1是端口地址的高位字節。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 503 無法登錄。
16. PORT(Data Port,數據端口)命令
說明:為數據連接指定一個IP地址和本地端口。
用法:PORT<Socket><CRLF>
參數:Socket是數據連接中要使用的數據端口的一個HOST-PORT規約。用戶和服務器都有默認的數據端口,在正常情況下不需要這條命令和對它的應答。如果使用了這條命令,則參數是一個32個Internet主機地址和一個16位TCP端口地的拼接。這個地址信息被拆分為8位的字段,並且每個字段的值是作為一個十制數傳輸的(在字符串意義上)。各個字段用逗號分隔開。一條端口命令可以是這樣:
PORT h1,h2,h3,p1,p2
其中H1是Internet主機地址的高位字節,P1是本地端口的高位字節。
例子:
SendData "PORT 199,199,199,0,33,1" + “/r/n
返回值如下(粗體表示成功):
l 200 命令成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 530 無法登錄。
17. PWD(Print Working Directory,打印工作目錄) 命令
說明:在應答中返回當前工作目錄的名稱。
用法:PWD<CRLF>
參數:無
例子:
SendData "PWD" + “/r/n
返回值如下(粗體表示成功):
l 257 “PATHNAME”已創建
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
18. QUIT(Logout,注銷)命令
說明:終止連接。
用法:QUIT<CRLF>
參數:無。
例子:
SendData "QUTI" + “/r/n
注釋:QUIT將終止此USER,如果沒有正在進行的文件傳送,服務器將關閉控制連接。如果文件傳送正在進行,該連接仍然打開直至結果呼響應,然后服務器將其關閉。如果用戶進程正在為幾個USER傳送文件,不想關閉后再逐個重新打開連接,那么應該使用REIN命令代替QUIT。
控制連接的意外關閉會導致服導器采取有效的中止(ABORT)和注銷(QUIT)操作。
返回值如下(粗體表示成功):
l 221 服務正在關閉控制連接。
l 500 語法錯誤,無法識別命令。
19. REIN(Reinitialize,重新初始化) 命令
說明:終止一個用戶。
用法:REIN<CRLF>
參數:無。
例子:
SendData "REIN" + “/r/n
注釋:除了允許完成正在進行的傳送之外,REIN將刷新所有的I/O和帳號信息。所有參數都被復位到默認設置,控制連接仍然打開。這和用戶在剛剛打開控制連接時的狀態是一樣的。如果后來想要登錄,在發送USER命令之前送一條REIN命令。
返回值如下(粗體表示成功):
l 120 服務將在nnn分鍾后准備好。
l 220 服務已為新用戶准備好。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 502 命令還沒有被實現。
20. REST(Restart,重新啟動)命令
說明:標識出文件內的數據點,將從這個點開始繼續傳送文件。
用法:REST<Marker><CRLF>
參數:Marker代表文件傳送將要由此重新啟動的服務器標記。
例子:
SendData "REST 244" + “/r/n
注釋:REST不會引起文件傳送,而只是跳到文件中指定的數據檢驗點上。RSET后緊跟着適當的FTP服務命令,該命令才會引起文件的繼續傳送。
返回值如下(粗體表示成功):
l 無響應即表示成功。
l 350 請求的文件操作在等待更進一步的信息。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
21. RETR(Retrieve,檢索)命令
說明:這條命令讓服務器給客戶傳送一份在路徑名中指定的文件的副本。這不會影響該文件在服務器站點上的狀態和內容。
用法:RETR<FileName><CRLF>
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "RETR /pub/cgvb/misc/somefile.zip" + “/r/n
返回值如下(粗體表示成功):
l 110 重新啟動標記應答。
在此情況下,文體是精確的,而且不會留給特定的實現處理;它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態沒問題,准備打開數據連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉,傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如,文件正忙)。
l 451 請求的操作被中止,處理中發生本地錯誤。
l 500 語法錯誤,無法識別命令。
這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
22. RMD(Remove Directory,刪除目錄)命令
說明:刪除一個在路徑名中指定的目錄(如果是絕對路徑名)或當前工作目錄的子目錄(如果是相對路徑名)。
用法:RMD<Path><CRLF>
參數:Path是服務器端上一個完全合格的路徑。
例子:
SeddData "RMD /users/johnsmith" + “/r/n
返回值(粗體表示成功):
l 250 請求的文件操作沒問題,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行;文件不可用(例如,找不到文件,無訪問權)。
23. RNFR(Rename From,把…重命名)命令
說明:文件重命名進程的前一半。指定要重命名的文件的舊路徑和文件名。
用法:RNFR<FileName><CRLF>
參數:FileName是服務器站點上一個完全有效的路徑和文件名。
例子:
SendData "RNFR source.zip" + “/r/n
RNFR后面必須緊跟着一條指定新路徑和文件名的"Rename to"命令(RNTO)。
返回值如下(粗體表示成功):
l 無響應即表示成功
l 350 請求的文件操作在等待更進一步的信息。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
24. RNTO(Rename TO,重命名為)命令
說明:文件重命名進程的后一半。指定要重命名的文件的新路徑和文件名。
用法:RNTO<FileName><CRLF>
參數:FileName是服務器站點上的一個有效文件名。
例子:
SendData "RNTO destination.ziP" + “/r/n
注釋:RNTO前面必須是一條"Rename from"命令(RNFR)。RNER和RNTO合在一起才能重命名服務器上的一個文件。
返回值如下(粗體表示成功):
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 503 命令的順序不對。
l 530 無法登錄。
l 532 文件的存儲需要帳號。
l 553 請求的操作無法執行,不允許的文件名。
25. SITE(Site Parameters,站點參數)命令
說明:服務器使用SITE提供了某些服務特性,這些服務特性在系統中對文件傳達而言是必要的,但又不是足夠通用的可以包括到協議中作為命令的那些服務特性。這些服務的本質和他們的語法規范可以陳述在對HELPSITE命令的應答中。
用法:SITE<String><CRLF>
參數:String可以是任何串參數。
例子:
SendData "SITE chmod 646 mylifle.ziP" + “/r/n
注釋:舉例來說,使用如下語法,你就可以使用SITE來改變一個文件的權限屬性。
SITE CHMOD<Attribute><Filename>
返回值如下(粗體表示成功):
l 200 命令成功。
l 202 命令還沒有被實現,在此站點上是多余的。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變無中有語法錯誤。
l 530 無法登錄。
26. SMNT(Structure Mount,結構裝配)命令
說明:允許用戶裝配另一個文件系統的數據結構而無需改變登錄、帳號信息或傳輸參數。
用法:SMNT<Path><CRLF>
參數:Path是另一個文件數據系統的路徑。
例子:
SendData "SMNT/users/johnsmith"&vbCrlf
返回值如下(粗體表示成功):
l 202 命令還沒有被實現,在此站點上是多余的。
l 250 請求的文件操作沒問題,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
27. STAT(Status,狀態)命令
說明:使一個狀態響應以應答的形式通過控制連接發送出去
用法:STAT[<PathName>]<CRLF>
參數:PathName是服務器上的一個有效路徑。
例子:
SendData "STAT /users/johnsmith/mylilE" + “/r/n
注釋:STAT可以在文件傳輸(連同Telnet IP和Synch信號一起——請參看RFC959的FTP Commands部分)期間發送,在此情況下服務器將響應操作中的進程狀態,或者在兩次文件傳輸之間發送。在后一種情況下,這條命令可以帶一參數字段。如果指定了一個完整的路徑名,STAT將類似於LIST命令,除了它的數據是通過控制連接傳送的之外。如果指定的是一個局部路徑,服務器將在響應中給出一份與指定項相關聯的文件名或屬性列表。如果不指定參數,服務器將返回有關此服務器FTP進程的常規狀態信息,這其中包括當前所有傳輸參數的值和連接狀態。
返回值如下(粗體表示成功):
l 211 系統狀態,或系統的幫助應答。
l 212 目錄狀態。
l 213 文件狀態。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 500 語法錯誤,無法識命令。這其中包括包令行過長類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
l 530 無法登錄。
28. STOR(Store,保存)命令
說明:讓服務器接收一個來自數據連接的文件。
用法:STOR<FileName><CRLF>
參數:FileName是服務器站點上一個完全合格的路徑和文件名。
例子:
SendData "STOR newfile.zip" + “/r/n
注釋:Store命令讓服務器接收通過數據連接傳輸而來的數據,並把數據存為務器站點上的文件。如果在路徑名中指定的文件已經在服務站點上存在,則此文件的內容將被傳輸過來的數據所替代。如果在路徑名中指定的文件尚未存在,將創建一個新文件。
返回值如下(值體表示成功):
l 110 重新啟動標記應答
在此情況下,文本是精確的,而且不會留給特殊的實現處理,它必須讀取:
MARK yyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應相標記(請注意標記和“=”之間的空格)。
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態一切正常,准備打開數據連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作正常進行,已完成。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉,傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)
l 451 請求的操作被中止,處理中發生本地錯誤。
l 452 請求的操作無法執行,系統的存儲空間不足。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
l 532 文件的存儲需要帳號。
l 550 請求的操作無法執行,文件不可用(例如找不到文件,無訪問權)。
l 551 請求的操作被中止,未知的頁類型。
l 552 請求的文件操作被子中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l 553 請求的操作無法執行,不允許的文件名。
29. STOU(Store Unique,存為唯一)命令
說明:讓服務器准備接收一個文件,並指示服務器把這個文件用唯一的名稱保存到目的目錄中。
用法:STOU<CRLF>
參數:無。
例子:
SendData "STOU"&vbCrlf
注釋:Store Unique命令和STOR所做的工作是基本一樣的,只是前者在當前目錄下生成的文件是以一個該目錄中唯一的名稱來創建的。250 Transfer Started響應中必須包括這個生成的名稱。
返回值如下(粗體表示成功):
l 110 重新啟動標記應答
在此情況下,文本是精確的,而且不會留給特殊的實現處理,它必須讀取:
MARKyyyy=mmmm
其中yyyy是用戶進程的數據流標記,mmmm是服務器上的相應標記(請注意標記和“=”之間的空格)。
l 125 數據連接已打開,傳輸啟動。
l 150 文件狀態正常,准備打開數據連接。
l 226 關閉數據連接,請求的文件操作已成功。
l 250 請求的文件操作沒問題,已完成(該行中包括一個唯一的文件名)。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答。
l 425 無法打開數據連接。
l 426 連接關閉,傳輸中止。
l 450 請求的文件操作無法執行,文件不可用(例如文件正忙)。
l 451 請求的操作被中止,處理中發生本地錯誤。
l 452 請求的操作無法執行,系統的存儲空間不足。
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
l 532 文件的存儲需要帳號。
l 550 請求的操作無法執行,文件不可(例如找不到文件,無訪問權)。
l 551 請求的操作作被中止,未知的頁類型。
l 552 請求的文件操作被中止,超過了分配的存儲單元(對當前目錄或數據集而言)。
l 553請求的操作無法執行,存在不允許的文件名。
30. STRU(File Structure,文件結構)命令
說明:指定傳達數據的結構類型。
用法:STRU<Structure Type><CRLF>
參數:StructureType是如下ASCII字符的其中之一:
F——文件結構(默認值)
R——記錄結構
P——頁結構
有關使用非文件結構的信息請參看RFC959。
例子:
SendData "STRUR" + “/r/n
返回值如下(粗體表示成功):
l 200 命令成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
31. SYST(System,系統)命令
說明:SYST用於查明服務器上操作系統的類型。
用法SYST<CRLF>
例子:
SendData "SYST" + “/r/n
注釋:按照推測,應答中的第一個單詞是在Assigned Numbers文檔[4]的當前版本中列出的某一個系統名稱。但是,並不一定都能成功,新的系統每時每刻都在涌現。而公開的文檔也許能跟上趟,也許不能。
返回值如下(粗體表示成功):
l 215 NAME系統類型。NAME是來自Assigned Numbers文檔中的一個正式的系統名稱。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 502 命令還沒有被實現。
32. TYPE(Representation Type,表達類型)命令
說明:確定數據的傳輸方式。
用法:TYPE<Data Type Code><CRLF>
參數:Data type Code是一個(或幾個)ASCII字符,它標識出一種數據表達類型。
例子:
‘—設置二進制模式
SendData "type I" + “/r/n
注釋:最典型的情況就是使用TYPE命令在ASCII或二進制模式(Image,圖像)之間切換。發送和接收任何類型的文件時都可以使用圖像類型。ASCII類型只在傳送文本時使用。
有幾種類型要用到第二個參數。第一個參數由一個單獨的ASCII字符表示,ASCII和EBCDIC的第二個Format參數也是如此;本地字節的第二個參數則是一個表示Byte大小的十進制整數。兩個參數之間用<SP>(Space,即空格,ASCII代碼為32)分隔開。
給類型分配如下代碼:
A——ASCII*
E——EBCDIC*
I——Image(圖像,傳送二進制文件時用它)。
L<byte size>——Local byte Byte size(本地字節,字節大小)
-------------------------------------
*——A和E類型的第二個Parameter要用到如下三個的其中一個:
N——Nonprint(非打印)
T——Telnet format effector(Telnet格式控制符)
C——Carriage Control(ASA)托架控制(美國國家標准)。
默認的表達類型是ASCII Nonprint。如果Format參數發生改變,后來只是第一個參數發生了改變,Format將隨即返回到默認的Nonprint。
返回值如下(粗體表示成功):
l 200 命令成功。
l 421 服務不可用,關閉控制連接。
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 504 命令中還沒有實現該參數。
l 530 無法登錄。
命令:USER(User Name,用戶名稱)
說明:指定遠程系統上的用戶名稱。和PASS命令一起使用來登錄。
用法:USER<User><CRLF>
參數:UserName是FTP系統上已經注冊的用戶名稱。
例子:
SendData "USER johns" + “/r/n
注釋:在連接到一台FTP服務器的端口並接收到一個由代碼220開頭的行,表示服務器已經准備好用戶向它發送USER和PASS命令以登錄進此FTP服務器之后,緊跟着發送USER命令。
PASS命令應該緊跟着USER命令。
如果在此FTP服務器上有帳號,就可以指定自己的用戶名和密碼。如果想匿名登錄,可以指定用戶名為“Anonymous”,而用自己的電子郵件地址當密碼。
在會話期間,可以隨時發送USER和PASS命令,把控制權交給一個新用戶。
返回值如下(粗體表示成功)
l 230 用戶已經登錄。
l 331 用戶名正常,需要密碼。
l 332 登錄需要帳號。
l 421 服務不可用,關閉控制連接
如果某項服務獲知自己即將關閉,會向所有命令做出這個應答
l 500 語法錯誤,無法識別命令。這其中包括命令行過長之類的錯誤。
l 501 參數或變元中有語法錯誤。
l 530 無法登錄。
以上為大部分的FTP命令,如果想進行FTP高級編程,就必須掌握這些具體的FTP命令。
