以文本方式查看主题

-  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=97156)

--  作者:douglas738888
--  发布时间:2017/3/7 10:03:00
--  FTP自制窗口上传失败

请教老师以下代码,哪里有问题,上传失败,无法上传至服务器上的文件夹中,代码是写在按钮里面

Dim dlg As new OpenFileDialog
Dim piv As WinForm.FileManager = e.Form.Controls("FileManager1")
dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif"
If dlg.ShowDialog = DialogResult.OK Then
    Dim xg As Integer = dlg.FileName.LastIndexOf("/")
    Dim fname As String = dlg.FileName.SubString(xg + 1)   
    piv.AddFile(dlg.FileName)

 

 Dim ftp As new FTPClient
    ftp.Host = "120.77.178.193"
    ftp.Account = "DETftp"
    ftp.Password = "Nc0000000000"

 

Dim fp As String = fname
    Dim sts As List(of String) = ftp.GetFileList(fp)   \'获取当前目录的文件列表
    If sts.Count > 0 Then
        For Each st As String In sts
            If st = fname Then
                MessageBox.Show("服务器上存在同名文件!","提醒")
                Return   \'这里是简化了操作,读者可以自己做是否覆盖的功能
            End If
        Next
    End If


    e.Form.text = "ftp管理器   文件上传中...."
    If ftp.Upload(dlg.FileName,fp & "/" & fname) = True Then  \'若成功上传
        Functions.Execute("刷新ListView")
        e.Form.text = "ftp管理器"
        MessageBox.Show("上传成功!","提醒")
    Else
        MessageBox.Show("上传失败!","提醒")
        e.Form.text = "ftp管理器"
    End If
End If


--  作者:cd_tdh
--  发布时间:2017/3/7 11:11:00
--  
我觉得系统自带的挺好用的哈
--  作者:douglas738888
--  发布时间:2017/3/7 11:21:00
--  
系统自带是好用,但是,实际操作中,不想让上传人员看到其他已上传的文件和控制按钮权限
--  作者:18523982317
--  发布时间:2017/3/7 11:28:00
--  

我也没用系统自带的,我还在服务器上以行进行建立对应的文件夹,分类存放。 你的上传这个看不太懂。。。我说看我的方法,行里有一列是备注,类型扩展为文件,远程存放的,窗口的文件管理器绑定到这列,把系统的按钮都隐藏了,文件管理器的远程链接参数都设置好,然后上次按钮的的代码,给你参考下。。。反正我的是没问题


Dim dlg As new OpenFileDialog

If dlg.ShowDialog = DialogResult.OK Then

    

    Dim xg As Integer = dlg.FileName.LastIndexOf("\\")\'斜杠最后出现的位置

    Dim fname As String = dlg.FileName.SubString(xg + 1)   \'获取所选文件名称  ABC.jpg

    Dim r As Row = Tables("公文下发").Current

    Dim s As Integer = Format(Date.now,"MdHmss")

    

    Dim ifo As new FileInfo(dlg.filename)

    If ifo.Length > 20480000 Then

        msgbox("只能上次20M以下的文件!")

        Return

    End If

    

    Dim ftp As new FTPClient

    ftp.host="**********"

    ftp.Port = **********

    ftp.account="*********"

    ftp.password="********"

    ftp.Connect

    If ftp.Connected = True Then

        msgbox("链接成功,准备上传,等待上传成功或者失败的提示!")

    End If

    

    If ftp.DirExists("\\gwfj\\" & Tables("公文下发").Current("公文名称")) = False Then

        ftp.MakeDir("\\gwfj\\" & Tables("公文下发").Current("公文名称"))

    End If

    

    Dim fp As String = "\\gwfj\\" & Tables("公文下发").Current("公文名称")

    e.Form.text = "文件上传中....请稍候........."

    If ftp.Upload(dlg.FileName,fp & "\\" & s & fname) = True Then  \'若成功上传

        e.Form.text = "基本资料"

        MessageBox.Show("上传成功!","提醒")

        If r.IsNull("上传文件") Then

            r("上传文件") = fp & "\\" & s & fname

        Else

            r("上传文件") = r("上传文件") & vbcrlf & fp & "\\" & s & fname

        End If

    End If

End If


--  作者:18523982317
--  发布时间:2017/3/7 11:28:00
--  
你最大的问题  感觉是没在行里记录下存储位置


--  作者:douglas738888
--  发布时间:2017/3/7 11:40:00
--  

谢谢楼上的,我学习学习


--  作者:有点色
--  发布时间:2017/3/7 14:54:00
--  

报什么错?你加入msgbox先定位哪句代码有问题。

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


--  作者:douglas738888
--  发布时间:2017/3/7 16:22:00
--  
弹出显示上传失败。如果用系统的FTP没有问题
--  作者:有点色
--  发布时间:2017/3/7 18:26:00
--  

上传失败。msgbox(fp & "/" & fname)

 

看弹出的路径是什么,看看你ftp里面,有没有对应的文件夹。