以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]FTP 上传过程出现意外错误,上传失败(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=180048)

--  作者:洮沙
--  发布时间:2022/9/25 17:21:00
--  [求助]FTP 上传过程出现意外错误,上传失败(已解决)
Dim ftp1 As New FtpClient
ftp1.Host = "***"
ftp1.Account = "***"
ftp1.Password = "***"
If ftp1.Connected = False Then\'如果FTP没有连接
    If ftp1.Connect Then \'连接FTP
        If ftp1.Upload(Zipfl, "\\sn\\" & filesys.GetName(Zipfl), True) = True Then \'如果上传成功     这一句好像有问题,远程文件目录用:\\web\\sn\\测试一样的问题
            Messagebox.show("已上传FTP服务器,请通知客户下载!", "提示", MessageBoxButtons.OK)
        Else
            Messagebox.show("上传失败!", "提示", MessageBoxButtons.OK)
        End If
       ’ftp1.OpenManager() \'如果连接成功,打开FTP客户端   如果改为手动选择上传可以执行
    Else
        Messagebox.show("连接FTP失败,请手动上传!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
End If

老师有以上代码,始终显示上传不成功,麻烦指正一下,谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220925172031.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220925174148.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2022/9/26 11:25:12编辑过]

--  作者:有点蓝
--  发布时间:2022/9/25 20:55:00
--  
    If ftp1.Connect Then \'连接FTP
msgbox(Zipfl)
msgbox("\\sn\\" & filesys.GetName(Zipfl))
        If ftp1.Upload(Zipfl, "\\sn\\" & filesys.GetName(Zipfl), True) = True Then 

--  作者:洮沙
--  发布时间:2022/9/26 7:26:00
--  
Dim zipfl As String = "E:\\开发的程序\\软件授权\\Reports\\6D4C31081DC5704F7A23BBA17AAA8701.zip"
If FileSys.FileExists(Zipfl) Then \'再次检查备份文件是否存在
    Messagebox.Show("zip文件创建成功,即将上传FTP服务器!", "提示")
    \'上传zip文件到FTP
    Dim ftp1 As New FtpClient
    ftp1.Host = "***"
    ftp1.Account = "***"
    ftp1.Password = "***"
    ftp1.RootDir = "\\web"
    If ftp1.Connected = False Then\'如果FTP没有连接
        If ftp1.Connect Then \'连接FTP
            msgbox(Zipfl)
            msgbox("\\sn\\" & filesys.GetName(Zipfl))
            If ftp1.Upload(Zipfl, "\\sn\\" & filesys.GetName(Zipfl), True) = True Then \'如果上传成功
                Messagebox.show("已上传至FTP服务器,请通知客户下载!", "提示", MessageBoxButtons.OK)
            Else
                Messagebox.show("上传至FTP服务器失败!", "提示", MessageBoxButtons.OK)
            End If
        Else
            Messagebox.show("连接FTP失败,请手动上传!", "提示", MessageBoxButtons.OK)
        End If
    End If
Else
    Messagebox.Show("zip文件创建失败,请手动创建后再上传至FTP服务器!", "提示")
End If

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220926065606.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220926065626.png
图片点击可在新窗口打开查看

如果将打开FTP管理器代码加上并按照以下代码顺序:
 ftp1.OpenManager() \'如果连接成功,打开FTP客户端
 If ftp1.Upload(Zipfl, "\\sn\\" & filesys.GetName(Zipfl), True) = True Then \'如果上传成功
      Messagebox.show("已上传至FTP服务器,请通知客户下载!", "提示", MessageBoxButtons.OK)
 Else
       Messagebox.show("上传至FTP服务器失败!", "提示", MessageBoxButtons.OK)
End If

执行结果:
第1步、能打开FTP管理器,选择任意目录,无需其他操作,直接关闭FTP管理器;
第2步、提示"已上传至FTP服务器,请通知客户下载!";   

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220926072308.png
图片点击可在新窗口打开查看
第3步、从FTP服务器查看,确实已经上传成功,如下图:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220926081527.png
图片点击可在新窗口打开查看


昨天反反复复测试了一下午,始终不得其解,麻烦老师帮忙看一下,谢谢!

再次测试:
 msgbox("1" & ftp1.CurrentDir)     \'显示结果:1/
 Dim dls As List(Of String) 
 dls = ftp1.GetDirList("")
 For Each dl As String In dls
        Output.Show(dl)            
Next                                          ’显示结果:Backup
                                                                LOG
                                                                WEB
ftp1.ChangeDir("\\web\\sn")
msgbox("2" & ftp1.CurrentDir)     \'显示结果:2/
        
ftp1.OpenManager() \'如果连接成功,打开FTP客户端
msgbox("3" & ftp1.CurrentDir)      \'显示结果:3/web/sn(所选文件夹名称)
[此贴子已经被作者于2022/9/26 8:47:25编辑过]

--  作者:有点蓝
--  发布时间:2022/9/26 8:57:00
--  
去掉这2句:
    If ftp1.Connected = False Then\'如果FTP没有连接
        If ftp1.Connect Then \'连接FTP

然后
If ftp1.Upload(Zipfl, "\\sn\\" & filesys.GetName(Zipfl), True) = True Then \'如果上传成功
改为下面试试
If ftp1.Upload(Zipfl, "\\WEB\\sn\\" & filesys.GetName(Zipfl), True) = True Then \'如果上传成功

--  作者:洮沙
--  发布时间:2022/9/26 9:09:00
--  
蓝老师,还是一样的错误,好像是目录不对。
[此贴子已经被作者于2022/9/26 9:10:03编辑过]

--  作者:有点蓝
--  发布时间:2022/9/26 9:18:00
--  
检查是不是设置了ftp权限:http://www.foxtable.com/webhelp/topics/3251.htm

或者有其它什么代码更改了ftp的操作路径

--  作者:洮沙
--  发布时间:2022/9/26 10:40:00
--  
BeforeEnterFolder 代码如下:
If e.FolderName = "/web/sn" Then
   MessageBox.Show("/web/sn属性:" & e.FTPName)
End If

执行结果:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20220926103521.png
图片点击可在新窗口打开查看

其他地方没有设置任何代码,只有此处用FTP,麻烦老师再想想办法,十分感谢!

--  作者:有点蓝
--  发布时间:2022/9/26 10:42:00
--  
去掉BeforeEnterFolder 代码。如果不是使用IIS做ftp网站的,改为使用IIS做网站测试
--  作者:洮沙
--  发布时间:2022/9/26 10:47:00
--  
我的FTP是租用的虚拟主机自带的。
--  作者:有点蓝
--  发布时间:2022/9/26 10:51:00
--  
提供测试用户和密码,发给客服那边测试一下