Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:FTP下载文件

1楼
mxl810823 发表于:2024/12/9 16:31:00
        运行如下程序时,服务器连接都没有报错,但时同一个文件有时能正常,有时报加载失败,有时当报加载失败时打开文件夹却又是已经下载了文件。怎么回事呢?
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
2楼
有点蓝 发表于:2024/12/9 16:39:00
文件有多大?会不会文件之前已经下载,并且处于打开状态?下载后是保存在哪的,本机硬盘,还是共享目录?
3楼
mxl810823 发表于:2024/12/9 17:02:00
        ylj = r("文件路径")
        mlj = ProjectPath & "RemoteFiles\" & r("文件名称")
文件保存在本机硬盘项目文件夹里,文件大小几十K的,几M的,都有,
文件之前已经下载,并且处于打开状态,这个我有注意到的,我打开了的我关掉才试的
4楼
有点蓝 发表于: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
5楼
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

我把代码改成这样,现在第一次运行实际是下载了文件的,但是报加载失败,第二次运行就可以直接打开,怎么样才可以第一次运行下载同时打开?不用再运行二次
6楼
有点蓝 发表于: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
7楼
mxl810823 发表于:2024/12/9 17:35:00
是不是要延迟一下,再调用程序打开?但是我试的文件才几十K,也不大,要怎么搞?
8楼
有点蓝 发表于: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
9楼
mxl810823 发表于:2024/12/9 17:38:00
现在多加一层IF, 目前可以一次打开,再多试试,有问题再问,谢谢了
共9 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.