以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  ftp上传失败  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=132403)

--  作者:cd_tdh
--  发布时间:2019/3/21 10:02:00
--  ftp上传失败

老师,这个代码有什么问题,一直上传不成功,提示:上传过程出现意外,上传不成功!但直接用内置管理器上传又没有问题。而且我把文件放到服务器,显示也正常。

e.cancel = True
Select  Case e.Col.Name
    Case  "身份证扫描件"
        Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog
        dlg.MultiSelect = True
        If dlg.showDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
            Dim ftp1 As new  ftpclient
            ftp1.host="120.0.**.**"
            ftp1.Account = "f*****"
            ftp1.password = "1*****"
            Dim r As Row = Tables("实名制管理").Current
            Dim ls = r.DataRow.Lines("身份证扫描件")
            For Each f As String In dlg.FileNames
                Dim file = "/项目名称/" & r("姓名") & "/" & filesys.GetName(f)
                If ftp1.DirExists("/项目名称/" & r("姓名")) = False Then
                    ftp1.MakeDir("/项目名称/" & r("姓名"))
                End If
                Dim Result As DialogResult
                If ftp1.FileExists(file) Then
                    Result = MessageBox.Show("文件已经存在,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                End If
                If result = Nothing OrElse result = DialogResult.Yes Then
                    If  ftp1.Upload(f,file,True) = True Then
                        If ls.contains(file) = False Then
                            ls.add(file)
                        End If
                    Else
                        MessageBox.Show( f & "上传失败" ,"提示" ,MessageBoxButtons.OK,MessageBoxIcon.Question)
                    End If
                End If
            Next
            r.DataRow.lines("身份证扫描件") = ls
            ftp1.Close
        End If
End Select

[此贴子已经被作者于2019/3/21 10:05:16编辑过]

--  作者:有点蓝
--  发布时间:2019/3/21 10:43:00
--  
MakeDir后服务器是否有新增对应的文件夹?


If  ftp1.Upload(f,file,True) = True Then
msgbox(file) \'能不能弹出
                        If ls.contains(file) = False Then
                            ls.add(file)
                        End If
                    Else


--  作者:cd_tdh
--  发布时间:2019/3/21 10:55:00
--  
不能弹出,目录创建没成功
--  作者:有点蓝
--  发布时间:2019/3/21 11:11:00
--  
ftp的目录必须一级一级创建,现有父目录,才能创建子目录
--  作者:cd_tdh
--  发布时间:2019/3/21 11:55:00
--  

有主目录,我另外表也这个方式,都是正确的。就这个ftp的不正确,创建目录权限全部都给了

 


--  作者:有点蓝
--  发布时间:2019/3/21 12:05:00
--  
如果无法创建目录,目录结构肯定不正确
--  作者:cd_tdh
--  发布时间:2019/3/21 12:17:00
--  
这是ftp主目录

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看
这是我直接用内置服务器创建的路径,而且子目录:平昌县/测试也是直接创建的

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

--  作者:有点蓝
--  发布时间:2019/3/21 12:20:00
--  
使用MakeDir只能一级一级的创建目录结构
--  作者:cd_tdh
--  发布时间:2019/3/21 12:25:00
--  

知道问题在哪儿了,老师,我想先根据“项目名称”创建目录,在项目名称下根据“姓名”创建子目录,怎么写呢?

按照一级一级创建,这样写不对,大概就下面这个意思:

                Dim file = "/" & r("项目名称") & "/" & r("姓名") & "/" & filesys.GetName(f)
                If ftp1.DirExists("/" & r("项目名称") & "/" & r("姓名")) = False Then
                    ftp1.MakeDir("/" & r("项目名称") & "/" & r("姓名"))
                End If

[此贴子已经被作者于2019/3/21 12:26:02编辑过]

--  作者:有点蓝
--  发布时间:2019/3/21 13:39:00
--  
If ftp1.DirExists("/" & r("项目名称")) = False Then
    if ftp1.MakeDir("/" & r("项目名称")) = false then msgbox(“创建失败”)
End If
If ftp1.DirExists("/" & r("项目名称") & "/" & r("姓名")) = False Then
    if ftp1.MakeDir("/" & r("项目名称") & "/" & r("姓名")) then msgbox(“创建失败”)
End If