以文本方式查看主题 - 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=148371) |
-- 作者:huangfanzi -- 发布时间:2020/4/6 19:32:00 -- [求助]FTP中删除文件的求助 老师,现在有二个问题,请帮忙解答下,谢谢! 一、当按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 |
-- 作者:有点蓝 -- 发布时间:2020/4/6 20:27:00 -- DataColChanging事件删除完文件后调用ftp1.GetFileList判断目录【"/上下游公司名录附件/" & r("公司")】里还有没有文件,如果没有调用ftp1.DeleteDir把这个目录删除即可 |
-- 作者:huangfanzi -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2020/4/6 20:52:00 -- 在窗口中的PictureViewer1控件中,点控件上的删除,报什么错? |
-- 作者:huangfanzi -- 发布时间: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 |