Foxtable(狐表)用户栏目专家坐堂 → [求助]FTP中删除文件的求助


  共有2226人关注过本帖树形打印复制链接

主题:[求助]FTP中删除文件的求助

帅哥哟,离线,有人找我吗?
huangfanzi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]FTP中删除文件的求助  发帖心情 Post By:2020/4/6 19:32:00 [只看该作者]

老师,现在有二个问题,请帮忙解答下,谢谢!
一、当按DEL键删除“附件”单元格中内容后,如何把上传文件时建立的公司名目录一起删除
二、附件列是个图片扩展型,当上传文件后可以点 右边的 “...” 打开图片管理器,在这其中删除某一个文件时,如何在服务器上同步删除,又当把所有文件都删除时,如何把创建的公司名目录也删除
目前代码如下:
表中Click事件:
If e.Col.Name = "附件" Then
    Dim dlg As New openFileDialog '定义一个新的SaveFileDialog
    dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif;*.png" '设置筛选器
    dlg.MultiSelect = True
    If dlg.showDialog = DialogResult.Ok Then '如果用户单击了确定按钮
        Dim ftp1 As new  ftpclient
        ftp1.host=""
        ftp1.port = ""
        ftp1.Account = ""
        ftp1.password = ""
        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 If

DataColChanging事件
If e.DataCol.Name = "附件" Then
    If e.NewValue = Nothing Then
        Dim dr As DataRow = e.DataRow
        Dim ls As List(of String) = dr.lines("附件")
        Dim ftp1 As new  ftpclient
        ftp1.host=""
        ftp1.port = ""
        ftp1.Account = ""
        ftp1.password = ""
        For Each s As String In ls
            ftp1.DeleteFile(s)
        Next
        ftp1.close
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105475 积分:536366 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/6 20:27:00 [只看该作者]

DataColChanging事件删除完文件后调用ftp1.GetFileList判断目录【"/上下游公司名录附件/" & r("公司")】里还有没有文件,如果没有调用ftp1.DeleteDir把这个目录删除即可

 回到顶部
帅哥哟,离线,有人找我吗?
huangfanzi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/6 20:46:00 [只看该作者]

又遇到个新问题
BeforeDeleteFile事件
MainTable.DataTable.DataCols("附件").FTPClient.DeleteFile(e.FileName)

当我在窗口中的PictureViewer1控件中,点控件上的删除,就会报错
如果直接在表上操作,点 “...”后打开窗口管理器,在BeforeDeleteFile事件中写入以下代码是正常的,但我不想让用户看到这个图片管理器,因为上面有个管理按钮是去不掉的,所以才想了其它办法

If e.DataCol.name = "附件" Then
    Dim Result As DialogResult
    Result = MessageBox.Show("确定要删除文件【" & e.FileName & "】?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        e.DataCol.FTPClient.DeleteFile(e.FileName)
    Else
        e.Cancel = True
    End If
End If

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105475 积分:536366 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/6 20:52:00 [只看该作者]

在窗口中的PictureViewer1控件中,点控件上的删除,报什么错?

 回到顶部
帅哥哟,离线,有人找我吗?
huangfanzi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/6 21:11:00 [只看该作者]

我改好了,我把附件列的扩展属性给去掉了,就没FTP信息了,就要在代码中再设置
If e.DataCol.name = "附件" Then
    Dim Result As DialogResult
    Result = MessageBox.Show("确定要删除文件【" & e.FileName & "】?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        'e.DataCol.FTPClient.DeleteFile(e.FileName) '如果是用表格上的窗口管理器,则用此行代码,下面的不需要,因为设置扩展属性时设定了FTP的相关信息
        Dim ftp1 As new ftpclient
        ftp1.host=""
        ftp1.port = ""
        ftp1.Account = ""
        ftp1.password = ""
        Dim r As Row = Tables("上下游公司名录").Current
        ftp1.DeleteFile(e.FileName)
    Else
        e.Cancel = True
    End If
End If

 回到顶部