VB的INET控件写FTP的问题

DimobjfsoAsNewFileSystemObjectPrivateSubCommand1_Click()IfList1.List(0)=""ThenMsgBox"... Dim objfso As New FileSystemObject
Private Sub Command1_Click()
If List1.List(0) = "" Then
MsgBox "当前没有可供下载的NC程式,请确认", vbCritical + vbOKOnly, "警告"
Exit Sub
ElseIf List1.List(0) <> "" Then
If objfso.FolderExists("d:\nctemp\") = True Then
objfso.DeleteFolder "d:\nctemp"
MkDir "d:\nctemp"
ElseIf objfso.FolderExists("d:\nctemp\") = False Then
MkDir "d:\nctemp"
End If
For i = 0 To List1.ListCount - 1
Inet6.Cancel
Inet6.Execute , "get MZ/" & List1.List(i) & " D:\NCTEMP" & List1.List(i)
Do While Inet6.StillExecuting
DoEvents
Loop
Inet6.Execute , "CLOSE"
Inet6.Execute , "QUIT"
Next

End If
MsgBox "ok"
End Sub

Private Sub Command2_Click()
If Option1.Value = False And Option2.Value = False And Option3.Value = False Then
MsgBox "请选择要上传的机器"
Exit Sub
ElseIf Option1.Value = True Then
For i = 0 To List1.ListCount - 1
Inet4.Cancel
Inet4.Execute , "put d:\nctemp\" & List1.List(i) & " /" & List1.List(i)
Do While Inet4.StillExecuting
DoEvents
Loop
Inet4.Execute , "CLOSE"
Inet4.Execute , "QUIT"
Next

ElseIf Option2.Value = True Then
For i = 0 To List1.ListCount - 1
Inet5.Cancel
Inet5.Execute , "put d:\nctemp\" & List1.List(i) & " /" & List1.List(i)
Do While Inet5.StillExecuting
DoEvents
Loop
Inet5.Execute , "CLOSE"
Inet5.Execute , "QUIT"
Next

ElseIf Option3.Value = True Then
For i = 0 To List1.ListCount - 1
Inet6.Cancel
Inet6.Execute , "put d:\nctemp\" & List1.List(i) & " /" & List1.List(i)
Do While Inet6.StillExecuting
DoEvents
Loop
Inet6.Execute , "CLOSE"
Inet6.Execute , "QUIT"
Next

End If
MsgBox OK
End Sub

上面的代码是我程序当中的某段代码,意思是将6号FTP的资料的资料下载到本地的D:\NCTEMP目录下,然后再根据Option控件的选择,把D:\NCTEMP的资料上传到3号或4号或5号的FTP中去
但是当我运行的时候发现,如下问题
明明下载下来应该是5个文件但是他下载下来的只有4个,第5个下载的时候就卡死了,当TIMEOUT后VB就非法关闭了,打开D:\NCTEMP目录去看发现第5个文件下载大小明显不对.变小了,小很多.下载有这种问题,上传也有同样的问题.
望高手答疑解惑,万分感谢
感觉楼下的方法不怎么稳定,我在执行第二笔资料的时候还是会出错 ,多运行几次就会卡住
展开
 我来答
网海1书生
科技发烧友

2009-12-20 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26226

向TA提问 私信TA
展开全部
应该把
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命令是可以连续执行的,无需下载一个文件就退出,然后又再登录下载下一个文件,这样不但效率低,而且很可能就是在这个不断登录的过程中造成文件下载异常。
限于条件,以上语句我无法测试,你自己试试看对不对。
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式