当前位置:首页 » 文件传输 » vb调用ftp命令
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

vb调用ftp命令

发布时间: 2023-02-14 00:05:37

1. VB操作FTP问题

Inet6.Cancel

Inet6.Execute , "CLOSE"
Inet6.Execute , "QUIT"
移到循环外面,比如:

Inet6.Cancel
For i = 0 To List1.ListCount - 1
Inet6.Execute , "get MZ/" & List1.List(i) & " D:\NCTEMP" & List1.List(i)
Do While Inet6.StillExecuting
DoEvents
Loop
Next
Inet6.Execute , "CLOSE"
Inet6.Execute , "QUIT"

下面的上传文件也一样。

FTP的get命令和put命令是可以连续执行的,无需下载一个文件就退出,然后又再登录下载下一个文件,这样不但效率低,而且很可能就是在这个不断登录的过程中造成文件下载异常。
限于条件,以上语句我无法测试,你自己试试看对不对。
希望我的回答可以帮助到你,谢谢

2. VB中如何实现上传文件的功能

用script脚本 直接调用FTP 命令实现上传文件到FTP服务器。

代码如下:

'定义API函数
ConstSYNCHRONIZE=&H100000
ConstINFINITE=&HFFFFFFFF
"kernel32"(ByValdwDesiredAccessAsLong,ByValbInheritHandleAsLong,ByValdwProcessIdAsLong)AsLong
"kernel32"(ByValhObjectAsLong)AsLong
"kernel32"(ByValhHandleAsLong,ByValdwMillisecondsAsLong)AsLong

PrivateSubCommand1_Click()
DimfilenameAsString
DimftpAsString
DimunameAsString
DimupinAsString
ftp=InputBox("请输入服务器地址")
uname=InputBox("请输入帐号",,"anonymous")
upin=InputBox("请输入密码",,"IE@User")

filename=Timer()'取时间为文件名filename
Openfilename&".script"ForOutputAs#1'生成filename.script脚本,传输FTP用
Print#1,"user"
Print#1,uname
Print#1,upin
Print#1,"pwd"
Print#1,"hash"
Print#1,"put"&filename&".txt"
Print#1,"quit"
Close#1

Openfilename&".txt"ForOutputAs#1'生成的filename.txt保存了combo1和text1的文字
Print#1,Text1.Text
Print#1,Combo1.Text
Close#1
DoEvents
'调用ftp命令传输,不需要inet或winsock控件
DimpIdAsLong,pHndAsLong
pId=Shell("ftp-n-s:"&filename&".script"&""&ftp,vbHide)
pHnd=OpenProcess(SYNCHRONIZE,0,pId)
IfpHnd<>0Then
CallWaitForSingleObject(pHnd,INFINITE)
CallCloseHandle(pHnd)
EndIf
Killfilename&".script"'因为script脚本保存了帐号和密码,当传输完成后删除filename.script脚本
EndSub

3. vb6.0调用cmd上传文件到ftp服务器,急!

外部调用ftp 指令不用手动输入命令是不可能的,因为ftp指令没有提供过多的命令行参数,可以这样
创建Internet Transfer 控件
inter.execute ftpAddress,"send " & LocalFilePaht & " " & RemoteName
这样就能上传了
当然如果ftp是有密码的那地址要改一下
就是
ftp://UserName:PassWord@FTPAddress
就是这样的了

4. vb 命令行 ftp

把你的VB程序拷贝到BAT和TXT文件的目录下就行了,或者修改你的FTP.BAT,在里面有FTP.TXT文件的地方加上全路径名即可。

加入你原来的FTP.BAT有下面一行:
FTP -I FTP.TXT
那么可以修改为:
FTP -I D:\DATA\FTP.TXT

5. 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

6. 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 文件名不允许

7. VB.net连接FTP操作

MSDN上的,看看对你有没有帮助。GOOD LUCK!

Imports System.Net
Imports System.IO

Mole FtpSample

Sub Main(ByVal args() As String)
If args.Length = 0 OrElse args(0).Equals("/?") Then
DisplayUsage()
ElseIf args.Length = 1 Then
Download(args(0))
ElseIf args.Length = 2 Then
If args(0).Equals("/list") Then
List(args(1))
Else
Upload(args(0), args(1))
End If
Else
Console.WriteLine("Unrecognized argument.")
End If
End Sub

Private Sub DisplayUsage()
Console.WriteLine("USAGE:")
Console.WriteLine(" FtpSample [/? | <FTP download URL> | <local file>")
Console.WriteLine(" <FTP upload URL> | /list <FTP list URL>]")
Console.WriteLine()
Console.WriteLine("where")
Console.WriteLine(" FTP download URL URL of a file to download from an FTP server.")
Console.WriteLine(" FTP upload URL Location on a FTP server to upload a file to.")
Console.WriteLine(" FTP list URL Location on a FTP server to list the contents of.")
Console.WriteLine(" local file A local file to upload to an FTP server.")
Console.WriteLine()
Console.WriteLine(" Options:")
Console.WriteLine(" /? Display this help message.")
Console.WriteLine(" /list Specifies the list command.")
Console.WriteLine()
Console.WriteLine("EXAMPLES:")
Console.WriteLine(" Download a file FtpSample ftp://myserver/download.txt")
Console.WriteLine(" Upload a file FtpSample upload.txt ftp://myserver/upload.txt")
End Sub

Private Sub Download(ByVal downloadUrl As String)
Dim responseStream As Stream = Nothing
Dim fileStream As FileStream = Nothing
Dim reader As StreamReader = Nothing
Try
Dim downloadRequest As FtpWebRequest = _
WebRequest.Create(downloadUrl)
Dim downloadResponse As FtpWebResponse = _
downloadRequest.GetResponse()
responseStream = downloadResponse.GetResponseStream()

Dim fileName As String = _
Path.GetFileName(downloadRequest.RequestUri.AbsolutePath)

If fileName.Length = 0 Then
reader = New StreamReader(responseStream)
Console.WriteLine(reader.ReadToEnd())
Else
fileStream = File.Create(fileName)
Dim buffer(1024) As Byte
Dim bytesRead As Integer
While True
bytesRead = responseStream.Read(buffer, 0, buffer.Length)
If bytesRead = 0 Then
Exit While
End If
fileStream.Write(buffer, 0, bytesRead)
End While
End If
Console.WriteLine("Download complete.")
Catch ex As UriFormatException
Console.WriteLine(ex.Message)
Catch ex As WebException
Console.WriteLine(ex.Message)
Catch ex As IOException
Console.WriteLine(ex.Message)
Finally
If reader IsNot Nothing Then
reader.Close()
ElseIf responseStream IsNot Nothing Then
responseStream.Close()
End If
If fileStream IsNot Nothing Then
fileStream.Close()
End If
End Try
End Sub

Private Sub Upload(ByVal fileName As String, ByVal uploadUrl As String)
Dim requestStream As Stream = Nothing
Dim fileStream As FileStream = Nothing
Dim uploadResponse As FtpWebResponse = Nothing
Try
Dim uploadRequest As FtpWebRequest = WebRequest.Create(uploadUrl)
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile

' UploadFile is not supported through an Http proxy
' so we disable the proxy for this request.
uploadRequest.Proxy = Nothing

requestStream = uploadRequest.GetRequestStream()
fileStream = File.Open(fileName, FileMode.Open)

Dim buffer(1024) As Byte
Dim bytesRead As Integer
While True
bytesRead = fileStream.Read(buffer, 0, buffer.Length)
If bytesRead = 0 Then
Exit While
End If
requestStream.Write(buffer, 0, bytesRead)
End While

' The request stream must be closed before getting the response.
requestStream.Close()

uploadResponse = uploadRequest.GetResponse()
Console.WriteLine("Upload complete.")
Catch ex As UriFormatException
Console.WriteLine(ex.Message)
Catch ex As IOException
Console.WriteLine(ex.Message)
Catch ex As WebException
Console.WriteLine(ex.Message)
Finally
If uploadResponse IsNot Nothing Then
uploadResponse.Close()
End If
If fileStream IsNot Nothing Then
fileStream.Close()
End If
If requestStream IsNot Nothing Then
requestStream.Close()
End If
End Try
End Sub

Private Sub List(ByVal listUrl As String)
Dim reader As StreamReader = Nothing
Try
Dim listRequest As FtpWebRequest = WebRequest.Create(listUrl)
listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails
Dim listResponse As FtpWebResponse = listRequest.GetResponse()
reader = New StreamReader(listResponse.GetResponseStream())
Console.WriteLine(reader.ReadToEnd())
Console.WriteLine("List complete.")
Catch ex As UriFormatException
Console.WriteLine(ex.Message)
Catch ex As WebException
Console.WriteLine(ex.Message)
Finally
If reader IsNot Nothing Then
reader.Close()
End If
End Try
End Sub

End Mole

可以通过设置 Credentials 属性来指定用于连接服务器的凭据,也可以将它们包含在传递给 Create 方法的 URI 的 UserInfo 部分中。

从 FTP 服务器下载文件时,如果命令成功,所请求的文件的内容即在响应对象的流中。通过调用 GetResponseStream 方法,可以访问此流。

如果使用 FtpWebRequest 对象向服务器上载文件,则必须将文件内容写入请求流,请求流是通过调用 GetRequestStream 方法或其异步对应方法(BeginGetRequestStream 和 EndGetRequestStream 方法)获取的。必须写入流并在发送请求之前关闭该流。

请求是通过调用 GetResponse 方法或其异步对应方法(BeginGetResponse 和 EndGetResponse 方法)发送到服务器的。请求的操作完成时,会返回一个 FtpWebResponse 对象。FtpWebResponse 对象提供操作的状态以及从服务器下载的所有数据。

8. VB的FTP上传下载操作函数

直接用自带的ftp命令 也是一样的

无论是FTP,还是HTTP,都可以下载,如果是FTP,如果要登录请在路径中指定用户名和密码,如下载地址是www.abc.com/abc.rar" target="_blank">ftp://www.abc.com/abc.rar,用户名是software,密码是software,则在下载地址就输入:www.abc.com/abc.rar " target="_blank">ftp://software:[email protected]/abc.rar

用shell 好用的很 自己搞函数 还不稳定

9. 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