以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- FTP下载文件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194434) |
-- 作者:mxl810823 -- 发布时间:2024/12/9 16:31:00 -- FTP下载文件 运行如下程序时,服务器连接都没有报错,但时同一个文件有时能正常,有时报加载失败,有时当报加载失败时打开文件夹却又是已经下载了文件。怎么回事呢? If ftpd.Connect = True Then If ftpd.Download (ylj, mlj) = True Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else MessageBox.Show ("文件加载失败") End If Else MessageBox.Show ("服务器无法连接") End If |
-- 作者:有点蓝 -- 发布时间:2024/12/9 16:39:00 -- 文件有多大?会不会文件之前已经下载,并且处于打开状态?下载后是保存在哪的,本机硬盘,还是共享目录? |
-- 作者:mxl810823 -- 发布时间:2024/12/9 17:02:00 -- ylj = r("文件路径") mlj = ProjectPath & "RemoteFiles\\" & r("文件名称") 文件保存在本机硬盘项目文件夹里,文件大小几十K的,几M的,都有, 文件之前已经下载,并且处于打开状态,这个我有注意到的,我打开了的我关掉才试的
|
-- 作者:有点蓝 -- 发布时间:2024/12/9 17:10:00 -- 多测试,跟踪调试看看,找找有没有什么规律 If ftpd.Connect = True Then MessageBox.Show (FileSys.FileExists(mlj)) If ftpd.Download (ylj, mlj) = True Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else MessageBox.Show ("文件加载失败," & FileSys.FileExists(mlj)) End If Else |
-- 作者:mxl810823 -- 发布时间:2024/12/9 17:29:00 -- ylj = r("文件路径").replace(vblf, "").replace(vbcr, "").replace(" ", "") mlj = ProjectPath & "RemoteFiles\\" & r("文件名称").replace(vblf, "").replace(vbcr, "").replace(" ", "") If filesys.FileExists (mlj) Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else If ftpd.Download (ylj, mlj) = True Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else MessageBox.Show ("文件加载失败") End If End if 我把代码改成这样,现在第一次运行实际是下载了文件的,但是报加载失败,第二次运行就可以直接打开,怎么样才可以第一次运行下载同时打开?不用再运行二次
|
-- 作者:有点蓝 -- 发布时间:2024/12/9 17:31:00 -- 试试 If filesys.FileExists (mlj) Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else If ftpd.Download (ylj, mlj) = True Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else If filesys.FileExists (mlj) Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else MessageBox.Show ("文件加载失败") End If End If End If |
-- 作者:mxl810823 -- 发布时间:2024/12/9 17:35:00 -- 是不是要延迟一下,再调用程序打开?但是我试的文件才几十K,也不大,要怎么搞? |
-- 作者:有点蓝 -- 发布时间:2024/12/9 17:38:00 -- Else Threading.Thread.Sleep(1000) \'等待1秒 Application.DoEvents If filesys.FileExists (mlj) Then Dim Proc As New Process Proc.File = mlj Proc.Start() Else MessageBox.Show ("文件加载失败") End If End If End If
|
-- 作者:mxl810823 -- 发布时间:2024/12/9 17:38:00 -- 现在多加一层IF, 目前可以一次打开,再多试试,有问题再问,谢谢了 |